diff --git a/.eslintrc.json b/.eslintrc.json index bb2d3255d..78aa9929b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -8,33 +8,14 @@ "jest": true }, "ignorePatterns": ["**/*"], - "plugins": ["@nx", "@typescript-eslint", "prettier", "react-hooks"], + "plugins": ["@typescript-eslint", "prettier", "react-hooks"], "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": { - "@nx/enforce-module-boundaries": [ - "error", - { - "enforceBuildableLibDependency": true, - "allow": [], - "depConstraints": [ - { - "sourceTag": "*", - "onlyDependOnLibsWithTags": ["*"] - } - ] - } - ] - } - }, { "files": ["*.ts", "*.tsx"], "parserOptions": { "project": ["tsconfig.*?.json"] }, "extends": [ - "plugin:@nx/typescript", "eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier" @@ -94,7 +75,6 @@ "default-case": "off", "no-caller": "error", "no-case-declarations": "off", - "no-console": "error", "no-debugger": "error", "no-eval": "error", "no-fallthrough": "error", @@ -122,7 +102,6 @@ }, { "files": ["*.js", "*.jsx"], - "extends": ["plugin:@nx/javascript"], "rules": {} } ] diff --git a/.gitignore b/.gitignore index 78457613f..9ee2ad915 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,8 @@ package-lock.json # Next.js .next + +# Yarn ~4.5.0 related +.yarn +.pnp.cjs +.pnp.loader.mjs diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 4949f0980..000000000 --- a/.npmignore +++ /dev/null @@ -1 +0,0 @@ -example/ \ No newline at end of file diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 1b78f1c6f..000000000 --- a/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -save-exact=true -legacy-peer-deps=true diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index 3d567722c..000000000 --- a/.yarnrc +++ /dev/null @@ -1 +0,0 @@ -save-exact true diff --git a/README.md b/README.md index cf688c198..74ae56d68 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ +yarn tsc -b packages/my-near-wallet + +rm -rf ~/.yarn/berry/cache + + # NEAR Wallet Selector NEAR Wallet Selector makes it easy for users to interact with your dApp by providing an abstraction over various wallets within the NEAR ecosystem: diff --git a/examples/angular/.eslintrc.json b/examples/angular/.eslintrc.json deleted file mode 100644 index 3bc4e2714..000000000 --- a/examples/angular/.eslintrc.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": [ - "plugin:@nx/angular", - "plugin:@angular-eslint/template/process-inline-templates" - ], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "nearWalletSelector", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "near-wallet-selector", - "style": "kebab-case" - } - ], - "react/jsx-uses-react": "off", - "react/react-in-jsx-scope": "off", - "react-hooks/rules-of-hooks": "off", - "react-hooks/exhaustive-deps": "off", - "no-console": "off" - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nx/angular-template"], - "rules": {} - } - ] -} diff --git a/examples/angular/jest.config.ts b/examples/angular/jest.config.ts index fe9a5aec4..22c489fe8 100644 --- a/examples/angular/jest.config.ts +++ b/examples/angular/jest.config.ts @@ -9,7 +9,7 @@ module.exports = { "^.+\\.(ts|mjs|js|html)$": [ "jest-preset-angular", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", stringifyContentPathRegex: "\\.(html|svg)$", }, ], diff --git a/examples/angular/src/app/components/content/content.component.ts b/examples/angular/src/app/components/content/content.component.ts index 711c95b0f..f17499ee0 100644 --- a/examples/angular/src/app/components/content/content.component.ts +++ b/examples/angular/src/app/components/content/content.component.ts @@ -4,7 +4,7 @@ import { providers, utils } from "near-api-js"; import type { AccountView, CodeResult, -} from "near-api-js/lib/providers/provider"; +} from "near-api-js/dist/esm/providers/provider"; import type { AccountState, SignMessageParams, diff --git a/examples/angular/src/app/interfaces/account.ts b/examples/angular/src/app/interfaces/account.ts index 206fa06e7..9dc8d350c 100644 --- a/examples/angular/src/app/interfaces/account.ts +++ b/examples/angular/src/app/interfaces/account.ts @@ -1,4 +1,4 @@ -import type { AccountView } from "near-api-js/lib/providers/provider"; +import type { AccountView } from "near-api-js/dist/esm/providers/provider"; export type Account = AccountView & { account_id: string | null; diff --git a/examples/react/components/Content.tsx b/examples/react/components/Content.tsx index 5a2c74833..5bf638553 100644 --- a/examples/react/components/Content.tsx +++ b/examples/react/components/Content.tsx @@ -3,7 +3,7 @@ import { providers, utils } from "near-api-js"; import type { AccountView, CodeResult, -} from "near-api-js/lib/providers/provider"; +} from "near-api-js/dist/esm/providers/provider"; import type { SignedMessage, SignMessageParams, diff --git a/examples/react/interfaces.ts b/examples/react/interfaces.ts index fffb5df2c..2371c48a9 100644 --- a/examples/react/interfaces.ts +++ b/examples/react/interfaces.ts @@ -1,4 +1,4 @@ -import type { AccountView } from "near-api-js/lib/providers/provider"; +import type { AccountView } from "near-api-js/dist/esm/providers/provider"; export interface Message { premium: boolean; diff --git a/nx.json b/nx.json deleted file mode 100644 index be060ad73..000000000 --- a/nx.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "$schema": "./node_modules/nx/schemas/nx-schema.json", - "npmScope": "near-wallet-selector", - "workspaceLayout": { - "appsDir": "examples", - "libsDir": "packages" - }, - "affected": { - "defaultBase": "main" - }, - "tasksRunnerOptions": { - "default": { - "runner": "nx-cloud", - "options": { - "cacheableOperations": ["build", "lint", "test", "e2e"], - "accessToken": "ZjI3YmQzNmItNGFlYy00OTEzLWI4MTItZTU1MGQ3NzRhZTJhfHJlYWQ=" - } - } - }, - "targetDefaults": { - "build": { - "dependsOn": ["^build"], - "inputs": ["production", "^production"] - }, - "lint": { - "inputs": ["default", "{workspaceRoot}/.eslintrc.json"] - }, - "test": { - "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"] - } - }, - "generators": { - "@nx/angular:application": { - "style": "scss", - "linter": "eslint", - "unitTestRunner": "none", - "e2eTestRunner": "none" - }, - "@nx/angular:library": { - "linter": "eslint", - "unitTestRunner": "none" - }, - "@nx/angular:component": { - "style": "scss" - }, - "@nx/react": { - "application": { - "style": "scss", - "linter": "eslint", - "babel": true - }, - "component": { - "style": "scss" - }, - "library": { - "style": "scss", - "linter": "eslint" - } - }, - "@nx/next": { - "application": { - "style": "scss", - "linter": "eslint" - } - } - }, - "defaultProject": "react", - "namedInputs": { - "default": ["{projectRoot}/**/*", "sharedGlobals"], - "sharedGlobals": ["{workspaceRoot}/babel.config.json"], - "production": [ - "default", - "!{projectRoot}/.eslintrc.json", - "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", - "!{projectRoot}/tsconfig.spec.json", - "!{projectRoot}/jest.config.[jt]s" - ] - } -} diff --git a/package.json b/package.json index 20f8975a7..558065fac 100644 --- a/package.json +++ b/package.json @@ -2,31 +2,50 @@ "name": "near-wallet-selector", "version": "8.9.13", "description": "NEAR Wallet Selector makes it easy for users to interact with your dApp by providing an abstraction over various wallets within the NEAR ecosystem", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "near-snap", - "my-near-wallet", - "bitget-wallet", - "sender", - "neth", - "math-wallet", - "nightly", - "ledger", - "wallet-connect", - "ethereum-wallets", - "nearfi", - "meteor-wallet", - "welldone-wallet", - "ramper-wallet", - "near-mobile-wallet", - "mintbase-wallet", - "bitte-wallet", - "okx-wallet" + "scripts": { + "build:account-export": "yarn workspace @near-wallet-selector/account-export tsc -p packages/account-export/tsconfig.json", + "build:all": "yarn run-many --target=build --all --exclude=react,angular --configuration=production && node ./scripts/update-package-json.js", + "build:arepa-wallet": "yarn workspace @near-wallet-selector/arepa-wallet tsc -p packages/arepa-wallet/tsconfig.json", + "build:bitget-wallet": "yarn workspace @near-wallet-selector/bitget-wallet tsc -p packages/bitget-wallet/tsconfig.json", + "build:core": "yarn workspace @near-wallet-selector/core tsc -p packages/core/delme-tsconfig.json", + "build:here-wallet": "yarn workspace @near-wallet-selector/here-wallet tsc -p packages/here-wallet/tsconfig.json", + "build:ledger": "yarn workspace @near-wallet-selector/ledger tsc -p packages/ledger/tsconfig.json", + "build:math-wallet": "yarn workspace @near-wallet-selector/math-wallet tsc -p packages/math-wallet/tsconfig.json", + "build:meteor-wallet": "yarn workspace @near-wallet-selector/meteor-wallet tsc -p packages/meteor-wallet/tsconfig.json", + "build:mintbase-wallet": "yarn workspace @near-wallet-selector/mintbase-wallet tsc -p packages/mintbase-wallet/tsconfig.json", + "build:bitte-wallet": "yarn workspace @near-wallet-selector/bitte-wallet tsc -p packages/bitte-wallet/tsconfig.json", + "build:modal-ui": "yarn workspace @near-wallet-selector/modal-ui tsc -p packages/modal-ui/tsconfig.json", + "build:modal-ui-js": "yarn workspace @near-wallet-selector/modal-ui-js tsc -p packages/modal-ui-js/tsconfig.json", + "build:my-near-wallet": "yarn workspace @near-wallet-selector/my-near-wallet tsc -p packages/my-near-wallet/tsconfig.json", + "build:narwallets": "yarn workspace @near-wallet-selector/narwallets tsc -p packages/narwallets/tsconfig.json", + "build:near-mobile-wallet": "yarn workspace @near-wallet-selector/near-mobile-wallet tsc -p packages/near-mobile-wallet/tsconfig.json", + "build:near-snap": "yarn workspace @near-wallet-selector/near-snap tsc -p packages/near-snap/tsconfig.json", + "build:nearfi": "yarn workspace @near-wallet-selector/nearfi tsc -p packages/nearfi/tsconfig.json", + "build:neth": "yarn workspace @near-wallet-selector/neth tsc -p packages/neth/tsconfig.json", + "build:nightly": "yarn workspace @near-wallet-selector/nightly tsc -p packages/nightly/tsconfig.json", + "build:okx-wallet": "yarn workspace @near-wallet-selector/okx-wallet tsc -p packages/okx-wallet/tsconfig.json", + "build:ethereum-wallets": "yarn workspace @near-wallet-selector/ethereum-wallets tsc -p packages/ethereum-wallets/tsconfig.json", + "build:ramper-wallet": "yarn workspace @near-wallet-selector/ramper-wallet tsc -p packages/ramper-wallet/tsconfig.json", + "build:sender": "yarn workspace @near-wallet-selector/sender tsc -p packages/sender/tsconfig.json", + "build:wallet-connect": "yarn workspace @near-wallet-selector/wallet-connect tsc -p packages/wallet-connect/tsconfig.json", + "build:wallet-utils": "yarn workspace @near-wallet-selector/wallet-utils tsc -p packages/wallet-utils/tsconfig.json", + "build:welldone-wallet": "yarn workspace @near-wallet-selector/welldone-wallet tsc -p packages/welldone-wallet/tsconfig.json", + "build:xdefi-wallet": "yarn workspace @near-wallet-selector/xdefi tsc -p packages/xdefi/tsconfig.json", + "examples:vanillajs:generateimportmap": "(cd examples/vanillajs && jspm link index.html -o index.html)", + "find:unused": "ts-prune -p tsprune.json", + "lint": "yarn workspace-lint && nx run-many --target=lint --all --parallel", + "lint:fix": "yarn run-many --target=lint --all --fix", + "prepack": "yarn build:core && yarn build:all", + "prepublishOnly": "yarn build:core && yarn build:all", + "serve:angular": "yarn serve angular", + "serve:react": "yarn serve react --host=0.0.0.0", + "serve:vanillajs": "yarn examples:vanillajs:generateimportmap && http-server -c-1 examples/vanillajs", + "test": "yarn workspaces foreach --all -t run test" + }, + "private": true, + "workspaces": [ + "packages/*", + "examples/*" ], "homepage": "https://github.com/near/wallet-selector#README", "bugs": { @@ -37,51 +56,7 @@ "url": "git+https://github.com/near/wallet-selector.git" }, "license": "ISC", - "author": "near", - "main": "./lib/cjs/index.js", - "module": "./lib/esm/index.js", - "types": "./lib/esm/index.d.ts", - "scripts": { - "build:account-export": "nx run-many --target=build --projects=account-export --configuration=production", - "build:all": "nx run-many --target=build --all --exclude=react,angular --configuration=production && node ./scripts/update-package-json.js", - "build:arepa-wallet": "nx run-many --target=build --projects=arepa-wallet --configuration=production", - "build:bitget-wallet": "nx run-many --target=build --projects=bitget-wallet --configuration=production", - "build:core": "nx run-many --target=build --projects=core --configuration=production", - "build:here-wallet": "nx run-many --target=build --projects=here-wallet --configuration=production", - "build:ledger": "nx run-many --target=build --projects=ledger --configuration=production", - "build:math-wallet": "nx run-many --target=build --projects=math-wallet --configuration=production", - "build:meteor-wallet": "nx run-many --target=build --projects=meteor-wallet --configuration=production", - "build:mintbase-wallet": "nx run-many --target=build --projects=mintbase-wallet --configuration=production", - "build:bitte-wallet": "nx run-many --target=build --projects=bitte-wallet --configuration=production", - "build:modal-ui": "nx run-many --target=build --projects=modal-ui --configuration=production", - "build:modal-ui-js": "nx run-many --target=build --projects=modal-ui-js --configuration=production", - "build:my-near-wallet": "nx run-many --target=build --projects=my-near-wallet --configuration=production", - "build:narwallets": "nx run-many --target=build --projects=narwallets --configuration=production", - "build:near-mobile-wallet": "nx run-many --target=build --projects=near-mobile-wallet --configuration=production", - "build:near-snap": "nx run-many --target=build --projects=near-snap --configuration=production", - "build:nearfi": "nx run-many --target=build --projects=nearfi --configuration=production", - "build:neth": "nx run-many --target=build --projects=neth --configuration=production", - "build:nightly": "nx run-many --target=build --projects=nightly --configuration=production", - "build:okx-wallet": "nx run-many --target=build --projects=okx-wallet --configuration=production", - "build:ethereum-wallets": "nx run-many --target=build --projects=ethereum-wallets --configuration=production", - "build:ramper-wallet": "nx run-many --target=build --projects=ramper-wallet --configuration=production", - "build:sender": "nx run-many --target=build --projects=sender --configuration=production", - "build:wallet-connect": "nx run-many --target=build --projects=wallet-connect --configuration=production", - "build:wallet-utils": "nx run-many --target=build --projects=wallet-utils --configuration=production", - "build:welldone-wallet": "nx run-many --target=build --projects=welldone-wallet --configuration=production", - "build:xdefi-wallet": "nx run-many --target=build --projects=xdefi --configuration=production", - "examples:vanillajs:generateimportmap": "(cd examples/vanillajs && jspm link index.html -o index.html)", - "find:unused": "ts-prune -p tsprune.json", - "postinstall": "yarn build:all", - "lint": "nx workspace-lint && nx run-many --target=lint --all --parallel", - "lint:fix": "nx run-many --target=lint --all --fix", - "prepack": "yarn build:core && yarn build:all", - "prepublishOnly": "yarn build:core && yarn build:all", - "serve:angular": "nx serve angular", - "serve:react": "nx serve react --host=0.0.0.0", - "serve:vanillajs": "yarn examples:vanillajs:generateimportmap && http-server -c-1 examples/vanillajs", - "test": "nx run-many --target=test --all" - }, + "author": "NEAR", "dependencies": { "@angular/animations": "16.1.9", "@angular/common": "16.1.9", @@ -98,18 +73,27 @@ "@metamask/detect-provider": "2.0.0", "@meteorwallet/sdk": "1.0.9", "@mintbase-js/wallet": "0.6.1", + "@near-js/crypto": "file:../near-api-js", + "@near-js/keystores-browser": "file:../near-api-js", + "@near-js/providers": "file:../near-api-js", + "@near-js/signers": "file:../near-api-js", + "@near-js/transactions": "file:../near-api-js", + "@near-js/types": "file:../near-api-js", + "@near-js/utils": "file:../near-api-js", + "@near-js/wallet-account": "file:../near-api-js", "@near-snap/sdk": "0.6.0", "@noble/ciphers": "0.5.3", "@noble/hashes": "1.4.0", "@peersyst/near-mobile-signer": "1.1.0", "@ramper/near": "0.0.30", "@tanstack/react-query": "5.24.8", + "@wagmi/core": "2.10.6", "@walletconnect/modal": "2.6.2", "@walletconnect/sign-client": "2.13.0", "@web3modal/wagmi": "5.0.6", "better-sqlite3": "11.2.1", "big.js": "6.2.1", - "borsh": "0.7.0", + "borsh": "2.0.0", "browserify-fs": "1.0.0", "bs58": "5.0.0", "buffer": "6.0.3", @@ -119,7 +103,8 @@ "ethers": "5.7.2", "https-browserify": "1.0.0", "is-mobile": "4.0.0", - "near-api-js": "4.0.3", + "js-sha256": "^0.11.0", + "near-api-js": "file:../near-api-js", "near-seed-phrase": "0.2.0", "next": "13.3.0", "ngx-deploy-npm": "7.1.0", @@ -153,16 +138,6 @@ "@nrwl/rollup": "16.0.0", "@nrwl/tao": "16.0.0", "@nrwl/webpack": "16.0.0", - "@nx/angular": "16.4.0", - "@nx/cypress": "16.0.0", - "@nx/eslint-plugin": "16.0.0", - "@nx/jest": "16.0.0", - "@nx/js": "16.0.0", - "@nx/linter": "16.4.0", - "@nx/next": "16.0.0", - "@nx/react": "16.0.0", - "@nx/web": "16.0.0", - "@nx/workspace": "16.0.0", "@pmmmwh/react-refresh-webpack-plugin": "0.5.7", "@schematics/angular": "15.2.8", "@semantic-release/commit-analyzer": "9.0.2", @@ -175,7 +150,7 @@ "@types/big.js": "6.2.2", "@types/gh-pages": "6.1.0", "@types/jest": "29.4.4", - "@types/node": "18.11.9", + "@types/node": "^22.7.4", "@types/qrcode": "1.5.5", "@types/react": "18.0.25", "@types/react-dom": "18.0.9", @@ -184,6 +159,7 @@ "@types/w3c-web-usb": "1.0.6", "@typescript-eslint/eslint-plugin": "5.58.0", "@typescript-eslint/parser": "5.58.0", + "@walletconnect/types": "^2.17.1", "babel-jest": "29.4.3", "css-loader": "7.1.2", "cypress": "12.2.0", @@ -217,10 +193,36 @@ "ts-jest": "29.1.0", "ts-node": "10.9.1", "ts-prune": "0.10.3", - "typescript": "5.0.4", + "typescript": "^5.6.2", "url-loader": "4.1.1", "util": "0.12.5", "webpack": "5.75.0", "webpack-merge": "5.8.0" - } + }, + "keywords": [ + "near", + "blockchain", + "wallets", + "dapps", + "near-protocol", + "near-blockchain", + "near-snap", + "my-near-wallet", + "bitget-wallet", + "sender", + "neth", + "math-wallet", + "nightly", + "ledger", + "wallet-connect", + "ethereum-wallets", + "nearfi", + "meteor-wallet", + "welldone-wallet", + "ramper-wallet", + "near-mobile-wallet", + "mintbase-wallet", + "bitte-wallet", + "okx-wallet" + ] } diff --git a/packages/account-export/.babelrc b/packages/account-export/.babelrc deleted file mode 100644 index 1ea870ead..000000000 --- a/packages/account-export/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - [ - "@nx/react/babel", - { - "runtime": "automatic", - "useBuiltIns": "usage" - } - ] - ], - "plugins": [] -} diff --git a/packages/account-export/.eslintrc.json b/packages/account-export/.eslintrc.json deleted file mode 100644 index a39ac5d05..000000000 --- a/packages/account-export/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["plugin:@nx/react", "../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/account-export/INTEGRATION.md b/packages/account-export/INTEGRATION.md deleted file mode 100644 index e81d241e2..000000000 --- a/packages/account-export/INTEGRATION.md +++ /dev/null @@ -1,47 +0,0 @@ -# @near-wallet-selector/account-export - -## Wallet Selector Integration - -Implementing account imports in Wallet Selector requires either: -- Direct method call to an installed browser extension (injected wallets only) -- URL with encrypted account data, either a link to a wallet domain or a deep link for mobile wallets - -### Injected Wallets -For injected wallets implemented in browser extensions, calling a method directly on this plugin is permitted without encryption of account data. -To use this method, an injected wallet would implement the [importAccountsInSecureContext](../core/src/lib/wallet/wallet.types.ts) method e.g.: -```ts -importAccountsInSecureContext(params: AccountImportSecureContextParams): Promise { - params.forEach(({ accountId, privateKey }) => { - this.wallet.importAccount({ accountId, privateKey }); - }); -} -``` - -Note that this is the default expected behavior for injected wallets. Injected wallets may opt into the URL-based approach described below by setting -the `useUrlAccountImport` flag on `InjectedWalletMetadata` to `true`. - -### URL-Based - -Wallets may instead opt to implement a URL-based strategy, including browser wallets, mobile wallets via deep links, and injected wallets with a web component capable of -communicating with an extension. To use a URL, the [buildImportAccountsUrl](../core/src/lib/wallet/wallet.types.ts) must be implemented to return the base URL for the account import. The encrypted data will -then be appended to this URL as a fragment before redirecting the user to the composed URL, e.g.: -```ts -buildImportAccountsUrl(): string { - /* this URL must exist and parse the fragment data */ - return `https://awesome-near-wallet.xyz/${this.state.networkId}`; -} -``` - -The Wallet Selector will use this base URL and append encrypted data to it before redirecting there, so the final URL would be in the form of `"https://awesome-near-wallet.xyz/mainnet#xyz...abc"` - -:warning: -**Once the user is redirected, the destination site should call `history.replaceState()` to prevent user data from being unnecessarily exposed in the browser.** -:warning: - -Once redirected, the user would be prompted for the passphrase used to encrypt this data so that it could be decrypted in the destination wallet. The symmetric decryption method should be imported -from this library: - -```ts -import { decryptAccountData } from "@wallet-selector/account-export"; -const accounts = decryptAccountData({ ciphertext: urlHash, secretKey: userInputSecret }); -``` diff --git a/packages/account-export/README.md b/packages/account-export/README.md deleted file mode 100644 index 8ec3d8cb7..000000000 --- a/packages/account-export/README.md +++ /dev/null @@ -1,101 +0,0 @@ -# @near-wallet-selector/account-export - -This is the Account Export Selector UI package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry: - -```bash -# Using Yarn -yarn add @near-wallet-selector/account-export - -# Using NPM. -npm install @near-wallet-selector/account-export -``` - -Then use it in your wallet: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupExportSelectorModal } from "@near-wallet-selector/account-export"; -import { setupMyNearWallet } from "@near-wallet-selector/my-near-wallet"; - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [setupMyNearWallet()], -}); - -const modal = setupExportSelectorModal(selector, { - accounts: [ - { - accountId: "test.testnet", - privateKey: "ed25519:....", - }, - ... - ] -}); - -modal.show(); -``` - -## Options -- `accounts` (`Array`): List of objects with an account id and its private key to be exported. -- `theme` (`Theme?`): Specify light/dark theme for UI. Defaults to the browser configuration when omitted or set to 'auto'. This can be either `light`, `dark` or `auto`. -- `description` (`string?`): Define a custom description in the UI. -- `onComplete` (`({ accounts: Array, walletName: string }) => void`): Triggers when the user completes the flow. By default it is not set. - -### Supported Wallets - - [Nightly Wallet](https://github.com/near/wallet-selector/blob/main/packages/nightly/src/lib/nightly.ts) - - [Meteor Wallet](https://github.com/near/wallet-selector/blob/main/packages/meteor-wallet/src/lib/meteor-wallet.ts) - - [Welldone Wallet](https://github.com/near/wallet-selector/blob/main/packages/welldone-wallet/src/lib/welldone.ts) - - [Here Wallet](https://github.com/near/wallet-selector/blob/main/packages/here-wallet/src/lib/selector.ts) - - [My Near Wallet](https://github.com/near/wallet-selector/blob/main/packages/my-near-wallet/src/lib/my-near-wallet.ts) - - [Sender Wallet](https://github.com/near/wallet-selector/blob/main/packages/sender/src/lib/sender.ts) - -## Styles & Customizing CSS - -### React & Vue - -```ts -// Add import in the main component -import "@near-wallet-selector/modal-ui/styles.css"; -import "@near-wallet-selector/account-export/styles.css"; -``` - -These are the available css variables: - -```css ---wallet-selector-backdrop-bg ---wallet-selector-heading-color ---wallet-selector-text-color ---wallet-selector-sidebar-border-color ---wallet-selector-selected-wallet-bg ---wallet-selector-selected-wallet-bg-hover ---wallet-selector-wallet-option-border-color ---wallet-selector-wallet-option-bg-hover ---wallet-selector-content-bg ---wallet-selector-change-path-bg ---wallet-selector-home-button-bg ---wallet-selector-confirm-button-bg ---confirm-button-bg-hover ---wallet-selector-error ---wallet-selector-close-button-bg-color ---wallet-selector-close-button-fill-icon-colo ---wallet-selector-spinner-color ---wallet-selector-bottom-section ---wallet-selector-mobile-text ---wallet-selector-connected-green -``` - -Customizing css is done simply by updating the value of a variable in the root of your css file. - -```css -:root { - --wallet-selector-backdrop-bg: #26262630; -} -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/account-export/jest.config.ts b/packages/account-export/jest.config.ts deleted file mode 100644 index db99ae17d..000000000 --- a/packages/account-export/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "account-export", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]sx?$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "js", "html"], - coverageDirectory: "../../coverage/packages/account-export", -}; diff --git a/packages/account-export/package.json b/packages/account-export/package.json deleted file mode 100644 index f32408578..000000000 --- a/packages/account-export/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "@near-wallet-selector/account-export", - "version": "8.9.13", - "description": "This is the Export Selector UI package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector account-export", - "account-export" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/magin/packages/account-export", - "peerDependencies": { - "near-api-js": "4.0.3" - } -} diff --git a/packages/account-export/project.json b/packages/account-export/project.json deleted file mode 100644 index 63d4e6021..000000000 --- a/packages/account-export/project.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "account-export", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/account-export/src", - "projectType": "library", - "tags": [], - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/account-export", - "tsConfig": "packages/account-export/tsconfig.lib.json", - "project": "packages/account-export/package.json", - "entryFile": "packages/account-export/src/index.ts", - "external": ["react/jsx-runtime"], - "rollupConfig": "@nx/react/plugins/bundle-rollup", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/account-export/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/account-export/**/*.css", - "input": ".", - "output": "." - } - ], - "stylePreprocessorOptions": { - "includePaths": ["../../../../dist/packages/modal-ui/styles.css"] - } - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/account-export/**/*.{ts,tsx,js,jsx}"] - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/account-export"], - "options": { - "jestConfig": "packages/account-export/jest.config.ts", - "passWithNoTests": true - } - } - } -} diff --git a/packages/account-export/src/index.ts b/packages/account-export/src/index.ts deleted file mode 100644 index 80fde7c44..000000000 --- a/packages/account-export/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export { setupExportSelectorModal, decryptAccountData } from "./lib"; - -export type { - WalletSelectorModal, - ExportSelectorOptions, - Theme, -} from "./lib/index.types"; diff --git a/packages/account-export/src/lib/components/AccountSelect.tsx b/packages/account-export/src/lib/components/AccountSelect.tsx deleted file mode 100644 index a82dcabd4..000000000 --- a/packages/account-export/src/lib/components/AccountSelect.tsx +++ /dev/null @@ -1,197 +0,0 @@ -import type { ReactElement } from "react"; -import { useEffect } from "react"; -import React, { Fragment } from "react"; -import { translate } from "@near-wallet-selector/core"; -import { ModalHeader } from "./ModalHeader"; -import type { ExportAccountData } from "./ExportAccount"; -import { ACCESS_KEY_TYPES } from "./ExportAccount"; - -interface AccountSelectProps { - onCloseModal: () => void; - onBack: () => void; - selectedAccounts: Array; - setSelectedAccounts: (accounts: Array) => void; - accountsWithDetail: Array; - disabledAccounts: Array; - onNextStep: () => void; - isLoading: boolean; - buttonLabel: string; -} - -interface WarningLabelProp { - hasBalance: boolean; - type: string; -} - -const LOADING_ICON_DATA_URL = - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAR3SURBVHgBpVZ9aJVVGH+e55z33bi7zY9hMz+yMAeNoEIq6A9ZRKQWEsQNFIIpsf5Y9E+GsD9iBEEDMUkDa6ShRKKZYIWiRkaKaUGUGCKOTGMF84PNO99773vOefq9720yK5ZzD/dwPt/nd37P17lEk5Qnuz9roUkKT7T5bNe+QjTNLCHv24h1Xgh+OmtwQYPH2jUXwlnW9NRooqePfLS6MmmQ59cdeEGJlkJZA5MGVecoAwghBYZTVY9ftuaDSy8x8w9fbFl95JZAXuw9dmelkvRAyXxS7wMFryG4bIyWZiqzPgMhaFfGfn3NY3AZG9sPf/Dy8HidZvxkZc/h1pqnPlKey6yspMqUd9jVAEYY6RCGDQTwjGDwGTgAlbwRijV1C9vanz577tT+6r+YrOz5rlXFrQ/qZ+FbDxCfXS5oOgxln4v473f3rbgwdn7FK5/MCaH2eAg6X8g3K2iBMTiBkNJVKbod+ze9mgPZsY/UaicYzCE1HgpZc558olCTjTvWLxv9p1n3bV45iO7T5zq3TU9j9xTOLwQ5D9t48aEYrtGj2P/2BpNS78nZJoRdlDsYd8vphz273lqyhW5Rnlnz3hOe6SEwghvxPUMTVfYe2rpuUOqOkZeIxdSbsSJ8eTIAmXy5tftrMPkzi0C4B2ZDNHp+INvLQURkhYiJ6gDGko376DbEJ8k3mcnYBSeSM2ptL/XGsurNnxfnDIQNwCKADO1845Ef6Tbk0M51g4joMgncDyBmkrtsNEMQovcDxGYsGL2yDNAUxPv0VySs4yxhfeYbabJg0Awg+ILylEB6nKMpSOp0WCR1+QSuD4ELljNDEfyRrdXPCU1BTEgD7pyOzVmC2iBm0KgYAMCEeXovoClIjdKiVdQ3FYbzmatxWRqMPcNsDHyfNWskWk5TkJhNEwVyxA6hLL5clLJsW7voFxa6LiR5CCOeWzo3XFxKtyEdy3tnp7VahAoDp6PEVGvJye09l3P7K9k9WQijXBv4B6WG+0pvD0ybFEBHZ6OPh+/OGaBsIvNRAGp/ZHv1jJeon+omszBkFsr3FhsLB7rev3JLQKVSyfjmaW2BJSavDlqR7c5VrR+4AbLttbkXMehH7gjA8gZiD/tq+Or/ABZ3dUW/J62LcPUGcrW8pKSVFAg6cHz3O0l25qZHa/XGwWPg9aAwwzdZAaDX+7tbNsMYf5+bpaUS0dDQEF8rtsUxCbI5e5KRzGhBMiqNxllKju7d8NOYXjseRBytQngcVDL3wD9H+7vf3YS7mnnzqrZpwSxrwkh04cpM5NTMyJdHbIgaESyxJ6tZ5cDbw3qd0tqVCp25Se/4yYdr5/zm/ehjwvpxZHgN0Wlub0/Yt7awdykqRYFHy6NUQVrBd4o6p6ngrVL2Bo8ksuJqoXzq9Ln9m6rj9U74b6Wjo8OeP082aY5NUxRsYzwDkeFsU+MdUU3U4PG0QtbahqhadDMuHTy4fvS/9EwIUpdeuW/ZiShOipFxURRbNdWETFMRZrCFlEZGkuPHdycTafgLExNiI6YfUpcAAAAASUVORK5CYII="; - -const getWarningLabel = ({ - hasBalance, - type, -}: WarningLabelProp): ReactElement | null => { - if (type === ACCESS_KEY_TYPES.UNKNOWN) { - return ( - - {translate("modal.exportAccounts.selectAccounts.error")} - - ); - } - if (type === ACCESS_KEY_TYPES.LEDGER) { - return ( - - {translate("modal.exportAccounts.selectAccounts.warningLedger")} - - ); - } - if (!hasBalance) { - return ( - - {translate("modal.exportAccounts.selectAccounts.noBalance")} - - ); - } - return null; -}; - -export const AccountSelect: React.FC = ({ - onCloseModal, - onBack, - selectedAccounts, - setSelectedAccounts, - accountsWithDetail, - disabledAccounts, - onNextStep, - isLoading, - buttonLabel, -}) => { - const onAccountSelect = (accountId: string, checked: boolean) => { - if (checked) { - setSelectedAccounts([...selectedAccounts, accountId]); - } else { - setSelectedAccounts( - selectedAccounts.filter( - (existingAccountId: string) => existingAccountId !== accountId - ) - ); - } - }; - - const onSelectAll = () => { - if (selectedAccounts.length === accountsWithDetail.length) { - setSelectedAccounts([]); - return; - } - setSelectedAccounts(accountsWithDetail.map(({ accountId }) => accountId)); - }; - - const selectLabel = - selectedAccounts.length === accountsWithDetail.length - ? translate("modal.exportAccounts.selectAccounts.deselectAll") - : translate("modal.exportAccounts.selectAccounts.selectAll"); - - useEffect(() => { - // Select all available accounts by default - if (!selectedAccounts.length) { - setSelectedAccounts(accountsWithDetail.map(({ accountId }) => accountId)); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [accountsWithDetail.length]); - - return ( - -
- -
-
-
- {isLoading ? ( -
-
- loading-icon -
-
- ) : ( - <> -
- - {selectLabel} - -
- {accountsWithDetail.map(({ accountId }) => ( -
-
- { - onAccountSelect(accountId, e.target.checked); - }} - checked={selectedAccounts.includes(accountId)} - type="checkbox" - id={accountId} - name={accountId} - value={accountId} - /> - -
-
- ))} -
- {disabledAccounts.length > 0 && ( - <> - - {translate( - "modal.exportAccounts.selectAccounts.unavailable" - )} - -
- {disabledAccounts.map( - ({ accountId, type, hasBalance }) => ( -
-
- { - onAccountSelect(accountId, e.target.checked); - }} - checked={selectedAccounts.includes(accountId)} - type="checkbox" - id={accountId} - name={accountId} - value={accountId} - disabled - /> - -
-
- ) - )} -
- - )} -
-
- - - )} -
-
- - ); -}; diff --git a/packages/account-export/src/lib/components/AlertMessage.tsx b/packages/account-export/src/lib/components/AlertMessage.tsx deleted file mode 100644 index 1fc6877c1..000000000 --- a/packages/account-export/src/lib/components/AlertMessage.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import React, { Fragment } from "react"; -import type { ModuleState } from "@near-wallet-selector/core"; -import { ModalHeader } from "./ModalHeader"; - -interface AlertMessageProps { - message: string | null; - module?: ModuleState; - onBack: () => void; - onCloseModal: () => void; -} - -export const AlertMessage: React.FC = ({ - message, - module, - onBack, - onCloseModal, -}) => { - return ( - - -
-
-
- {module?.metadata.name} -
-

{module?.metadata.name}

-

{message}

-
-
-
- ); -}; diff --git a/packages/account-export/src/lib/components/BackArrow.tsx b/packages/account-export/src/lib/components/BackArrow.tsx deleted file mode 100644 index 073c0efa2..000000000 --- a/packages/account-export/src/lib/components/BackArrow.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from "react"; - -interface BackArrowProps { - onClick: () => void; -} - -export const BackArrow: React.FC = ({ onClick }) => { - return ( - - ); -}; diff --git a/packages/account-export/src/lib/components/ClickToCopy.tsx b/packages/account-export/src/lib/components/ClickToCopy.tsx deleted file mode 100644 index 08b917ca2..000000000 --- a/packages/account-export/src/lib/components/ClickToCopy.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React, { useState } from "react"; -import { translate } from "@near-wallet-selector/core"; - -interface ClickToCopyProps { - children: React.ReactNode; - copy: string; - onClick?: (e: string) => void; - id?: string; -} - -export const ClickToCopy: React.FC = ({ - children, - copy, - onClick, - id, -}) => { - const [show, setShow] = useState(false); - - const handleCopy = () => { - setShow(true); - setTimeout(() => setShow(false), 2000); - const input = document.createElement("textarea"); - input.innerHTML = copy; - document.body.appendChild(input); - input.select(); - const result = document.execCommand("copy"); - document.body.removeChild(input); - if (onClick) { - onClick(copy); - } - return result; - }; - - return ( - - ); -}; diff --git a/packages/account-export/src/lib/components/CloseButton.tsx b/packages/account-export/src/lib/components/CloseButton.tsx deleted file mode 100644 index 577203304..000000000 --- a/packages/account-export/src/lib/components/CloseButton.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from "react"; - -interface CloseButtonProps { - onClick: () => void; -} - -export const CloseButton: React.FC = ({ onClick }) => { - return ( - - ); -}; diff --git a/packages/account-export/src/lib/components/Complete.tsx b/packages/account-export/src/lib/components/Complete.tsx deleted file mode 100644 index e92f4a2c0..000000000 --- a/packages/account-export/src/lib/components/Complete.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { translate } from "@near-wallet-selector/core"; -import React from "react"; -import { ModalHeader } from "./ModalHeader"; - -interface CompleteProps { - onComplete: () => void; - onCloseModal: () => void; - onBack: () => void; - onStartOver: () => void; -} - -export const Complete: React.FC = ({ - onComplete, - onBack, - onCloseModal, - onStartOver, -}) => { - const onClick = () => { - onComplete(); - onCloseModal(); - }; - - return ( - <> -
- -
-
-

- {translate("modal.exportAccounts.complete.descOne")} -

-

- {translate("modal.exportAccounts.complete.descTwo")} -

-
- - - - - ); -}; diff --git a/packages/account-export/src/lib/components/ExportAccount.tsx b/packages/account-export/src/lib/components/ExportAccount.tsx deleted file mode 100644 index 74c7f9bf1..000000000 --- a/packages/account-export/src/lib/components/ExportAccount.tsx +++ /dev/null @@ -1,361 +0,0 @@ -import React, { Fragment, useEffect, useState } from "react"; -import type { - BrowserWalletBehaviour, - InjectedWalletBehaviour, - ModuleState, - Wallet, - WalletSelector, - AccountImportData, - InjectedWalletMetadata, -} from "@near-wallet-selector/core"; - -import * as nearAPI from "near-api-js"; -import type { - FunctionCallPermissionView, - AccessKeyView, - AccountView, -} from "near-api-js/lib/providers/provider"; - -import { AccountSelect } from "./AccountSelect"; -import { Passphrase } from "./Passphrase"; -import { NoInterface } from "./NoInterface"; -import { Complete } from "./Complete"; - -import { encryptAccountData } from "../helpers"; - -type CompleteProps = { - accounts: Array; - walletName: string; -}; -interface ExportAccountProps { - alertMessage: string | null; - module?: ModuleState; - onCloseModal: () => void; - onWarning: () => void; - onBack: () => void; - accounts: Array; - selector: WalletSelector; - wallet: ModuleState; - onComplete?: (object: CompleteProps) => void; -} - -const EXPORT_ACCOUNT_STEPS = { - ACCOUNT_SELECTION: "ACCOUNT_SELECTION", - GET_PASSPHRASE: "GET_PASSPHRASE", - NO_INTERFACE: "NO_INTERFACE", - COMPLETE: "COMPLETE", -}; - -export const ACCESS_KEY_TYPES = { - LEDGER: "Ledger", - FULL_ACCESS_KEY: "Full Access Key", - MULTI_SIG: "Multi-Sig", - UNKNOWN: "Unknown", -}; - -const permissionToType = ( - permission: string | FunctionCallPermissionView -): string => { - if (permission === "FullAccess") { - return ACCESS_KEY_TYPES.FULL_ACCESS_KEY; - } - //@ts-ignore - if (permission?.FunctionCall?.method_names.includes("__wallet__metadata")) { - return ACCESS_KEY_TYPES.LEDGER; - } - const multiSigMethods = [ - "add_request", - "add_request_and_confirm", - "delete_request", - "confirm", - ]; - if ( - //@ts-ignore - permission?.FunctionCall?.method_names.every((method: string) => - multiSigMethods.includes(method) - ) - ) { - return ACCESS_KEY_TYPES.MULTI_SIG; - } - return ACCESS_KEY_TYPES.UNKNOWN; -}; - -interface getAccountTypeProps { - provider: nearAPI.providers.Provider; - accountId: string; - publicKey: string; -} - -const getAccountType = async ({ - provider, - accountId, - publicKey, -}: getAccountTypeProps) => { - try { - const { permission } = await provider.query({ - request_type: "view_access_key", - account_id: accountId, - public_key: publicKey, - finality: "final", - }); - const type = permissionToType(permission); - return { type }; - } catch { - return { type: ACCESS_KEY_TYPES.UNKNOWN }; - } -}; - -interface getAccountBalanceProps { - provider: nearAPI.providers.Provider; - accountId: string; -} - -const getAccountBalance = async ({ - provider, - accountId, -}: getAccountBalanceProps) => { - try { - const { amount } = await provider.query({ - request_type: "view_account", - finality: "final", - account_id: accountId, - }); - const bn = BigInt(amount); - return { hasBalance: bn !== BigInt(0) }; - } catch { - return { hasBalance: false }; - } -}; - -export interface ExportAccountData { - accountId: string; - privateKey: string; - hasBalance: boolean; - type: string; -} - -export const ExportAccount: React.FC = ({ - alertMessage, - module, - onCloseModal, - onWarning, - accounts, - selector, - wallet, - onBack, - onComplete, -}) => { - const [selectedAccounts, setSelectedAccounts] = useState>([]); - const [isLoading, setIsLoading] = useState(false); - const [accountsWithDetail, setAccountsWithDetail] = useState< - Array - >([]); - const [disabledAccounts, setDisabledAccounts] = useState< - Array - >([]); - - const [passphrase, setPassphrase] = useState(""); - - //@ts-ignore - const [exportInterfaces, setExportInterfaces] = useState<{ - buildImportAccountsUrl?: BrowserWalletBehaviour["buildImportAccountsUrl"]; - importAccountsInSecureContext?: InjectedWalletBehaviour["importAccountsInSecureContext"]; - }>({}); - useEffect(() => { - const getExportInterfaces = async () => { - try { - const { - // @ts-ignore - buildImportAccountsUrl, - // @ts-ignore - importAccountsInSecureContext, - } = await wallet.wallet(); - setExportInterfaces({ - buildImportAccountsUrl, - importAccountsInSecureContext, - }); - if (!buildImportAccountsUrl && !importAccountsInSecureContext) { - onWarning(); - } - } catch (e) { - onWarning(); - } - }; - getExportInterfaces(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [module?.metadata.name, alertMessage]); - - const { network } = selector.options; - const provider = new nearAPI.providers.JsonRpcProvider({ - url: network.nodeUrl, - }); - const [hasCopied, setHasCopied] = useState(false); - - useEffect(() => { - const initialize = async () => { - setIsLoading(true); - const accountsWithDetails = await Promise.all( - accounts.map(async ({ accountId, privateKey }) => { - const keyPair = nearAPI.utils.KeyPair.fromString(privateKey); - const { type } = await getAccountType({ - provider, - accountId, - publicKey: keyPair.getPublicKey().toString(), - }); - const { hasBalance } = await getAccountBalance({ - provider, - accountId, - }); - - return { - accountId, - privateKey, - type, - hasBalance, - }; - }) - ); - const availableAccounts = accountsWithDetails.filter( - ({ hasBalance, type }) => { - return hasBalance && type === ACCESS_KEY_TYPES.FULL_ACCESS_KEY; - } - ); - setAccountsWithDetail(availableAccounts); - - const unavailableAccounts = accountsWithDetails.filter( - ({ hasBalance, type }) => { - return !hasBalance || type !== ACCESS_KEY_TYPES.FULL_ACCESS_KEY; - } - ); - setDisabledAccounts(unavailableAccounts); - setIsLoading(false); - }; - if (accountsWithDetail.length === 0) { - initialize(); - } - - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [ - exportInterfaces.buildImportAccountsUrl, - exportInterfaces.importAccountsInSecureContext, - ]); - - const [step, setStep] = useState(EXPORT_ACCOUNT_STEPS.ACCOUNT_SELECTION); - - useEffect(() => { - if (alertMessage) { - setStep(EXPORT_ACCOUNT_STEPS.NO_INTERFACE); - } else { - setStep(EXPORT_ACCOUNT_STEPS.ACCOUNT_SELECTION); - } - }, [alertMessage]); - - const showAccountSelection = () => - setStep(EXPORT_ACCOUNT_STEPS.ACCOUNT_SELECTION); - - const showPassPhrase = () => { - setStep(EXPORT_ACCOUNT_STEPS.GET_PASSPHRASE); - }; - - const { buildImportAccountsUrl, importAccountsInSecureContext } = - exportInterfaces; - - const onAccountSelectNext = () => { - if ( - wallet.type === "injected" && - !(wallet.metadata as InjectedWalletMetadata).useUrlAccountImport - ) { - injectedWalletInterface(); - setStep(EXPORT_ACCOUNT_STEPS.COMPLETE); - } else { - showPassPhrase(); - } - }; - - const injectedWalletInterface = async () => { - if (importAccountsInSecureContext) { - await importAccountsInSecureContext({ - accounts: accounts.filter(({ accountId }) => - selectedAccounts.includes(accountId) - ), - }); - } else { - setStep(EXPORT_ACCOUNT_STEPS.NO_INTERFACE); - } - }; - - const browserOrMobileInterface = () => { - const encryptedAccountData = encryptAccountData({ - accountData: accounts.filter(({ accountId }) => - selectedAccounts.includes(accountId) - ), - secretKey: passphrase, - }); - const isUrlCompatible = - wallet.type === "browser" || - (wallet.metadata as InjectedWalletMetadata).useUrlAccountImport; - if (isUrlCompatible && buildImportAccountsUrl) { - const url = `${buildImportAccountsUrl()}#${encryptedAccountData}`; - window.open(url, "_blank"); - } - setStep(EXPORT_ACCOUNT_STEPS.COMPLETE); - }; - - const onTransferComplete = () => { - if (onComplete) { - onComplete({ - accounts: selectedAccounts, - walletName: module?.metadata.name || "Unknown", - }); - } - }; - - return ( - - {step === EXPORT_ACCOUNT_STEPS.NO_INTERFACE && ( - - )} - {step === EXPORT_ACCOUNT_STEPS.ACCOUNT_SELECTION && ( - - )} - {step === EXPORT_ACCOUNT_STEPS.GET_PASSPHRASE && ( - - )} - {step === EXPORT_ACCOUNT_STEPS.COMPLETE && ( - - )} - - ); -}; diff --git a/packages/account-export/src/lib/components/ExportSelector.tsx b/packages/account-export/src/lib/components/ExportSelector.tsx deleted file mode 100644 index aac62b94b..000000000 --- a/packages/account-export/src/lib/components/ExportSelector.tsx +++ /dev/null @@ -1,213 +0,0 @@ -import React, { useCallback, useEffect, useState } from "react"; -import type { ModuleState, WalletSelector } from "@near-wallet-selector/core"; - -import type { ExportSelectorOptions, Theme, ModalRoute } from "../index.types"; -import { WalletList } from "./WalletList"; -import { AlertMessage } from "./AlertMessage"; - -import { WalletNotInstalled } from "./WalletNotInstalled"; - -import { Home } from "./Home"; -import { translate } from "@near-wallet-selector/core"; -import { ExportAccount } from "./ExportAccount"; - -interface ExportSelectorProps { - selector: WalletSelector; - options: ExportSelectorOptions; - visible: boolean; - hide: () => void; -} - -const getThemeClass = (theme?: Theme) => { - switch (theme) { - case "dark": - return "dark-theme"; - case "light": - return "light-theme"; - default: - return ""; - } -}; - -export const ExportSelector: React.FC = ({ - selector, - options, - visible, - hide, -}) => { - const [route, setRoute] = useState({ - name: "WalletHome", - }); - const [alertMessage, setAlertMessage] = useState(null); - const [selectedWallet, setSelectedWallet] = useState(); - - const onBackHome = () => { - setRoute({ - name: "WalletHome", - }); - }; - - useEffect(() => { - setRoute({ - name: "WalletHome", - }); - - const { selectedWalletId, modules } = selector.store.getState(); - if (selectedWalletId) { - const module = modules.find((m) => m.id === selectedWalletId); - setSelectedWallet(module); - } - // eslint-disable-next-line - }, [visible]); - - const handleDismissClick = useCallback(() => { - setAlertMessage(null); - onBackHome(); - hide(); - }, [hide]); - - useEffect(() => { - const close = (e: KeyboardEvent) => { - if (e.key === "Escape") { - handleDismissClick(); - } - }; - window.addEventListener("keydown", close); - - return () => window.removeEventListener("keydown", close); - }, [handleDismissClick]); - - const handleWalletClick = async (module: ModuleState) => { - setAlertMessage(null); - setSelectedWallet(module); - - try { - const { deprecated, available } = module.metadata; - - if (module.type === "injected" && !available) { - setRoute({ - name: "WalletNotInstalled", - params: { module: module }, - }); - return; - } - - if (deprecated) { - setAlertMessage( - `${module.metadata.name} is deprecated. Please select another wallet.` - ); - setRoute({ - name: "AlertMessage", - params: { - module: module, - }, - }); - return; - } - - setRoute({ - name: "ExportAccounts", - params: { - module: module, - }, - }); - return; - } catch (err) { - const { name } = module.metadata; - - const message = - err instanceof Error ? err.message : "Something went wrong"; - - setAlertMessage(`Failed to sign in with ${name}: ${message}`); - setRoute({ - name: "AlertMessage", - params: { - module: module, - }, - }); - } - }; - - const handleWarning = useCallback(() => { - if (selectedWallet) { - setAlertMessage( - `${selectedWallet?.metadata.name} ${translate( - "modal.exportAccounts.warning" - )}` - ); - setRoute({ - name: "AlertMessage", - params: { - module: selectedWallet, - }, - }); - } - }, [selectedWallet]); - - if (!visible) { - return null; - } - - return ( -
-
-
-
-
-

{translate("modal.exportAccounts.chooseAWallet")}

-
- { - handleWalletClick(module); - }} - selector={selector} - /> -
-
-
- {route.name === "AlertMessage" && alertMessage && ( - { - setAlertMessage(null); - onBackHome(); - }} - onCloseModal={handleDismissClick} - /> - )} - {route.name === "WalletNotInstalled" && ( - { - onBackHome(); - }} - onCloseModal={handleDismissClick} - /> - )} - {route.name === "WalletHome" && ( - - )} - {route.name === "ExportAccounts" && ( - - )} -
-
-
-
- ); -}; diff --git a/packages/account-export/src/lib/components/Home.tsx b/packages/account-export/src/lib/components/Home.tsx deleted file mode 100644 index d94742d2b..000000000 --- a/packages/account-export/src/lib/components/Home.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import React from "react"; - -import { ModalHeader } from "./ModalHeader"; -import { translate } from "@near-wallet-selector/core"; - -interface HomeProps { - onCloseModal: () => void; -} - -export const Home: React.FC = ({ onCloseModal }) => { - return ( -
-
- -
-
-
- - - - - - - - - - - - - {/*
*/} -
-

{translate("modal.exportAccounts.chooseAWallet")}

-

{translate("modal.exportAccounts.selectAWallet")}

-
-
-
- - - - - - - - - - - - - -
-

{translate("modal.exportAccounts.selectYourAccounts")}

-

{translate("modal.exportAccounts.afterDecide")}

-
-
-
-
-

{translate("modal.exportAccounts.disclaimer")}

-
-
-
- ); -}; diff --git a/packages/account-export/src/lib/components/ModalHeader.tsx b/packages/account-export/src/lib/components/ModalHeader.tsx deleted file mode 100644 index 37c6990fa..000000000 --- a/packages/account-export/src/lib/components/ModalHeader.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from "react"; -import { BackArrow } from "./BackArrow"; -import { CloseButton } from "./CloseButton"; - -interface ModalHeaderProps { - title: string; - onCloseModal: () => void; - onBack?: () => void; -} - -export const ModalHeader: React.FC = ({ - title, - onCloseModal, - onBack, -}) => { - const additionalClasses = title === "Get a Wallet" ? " -open" : ""; - return ( -
- {onBack && } -

{title}

- -
- ); -}; diff --git a/packages/account-export/src/lib/components/NoInterface.tsx b/packages/account-export/src/lib/components/NoInterface.tsx deleted file mode 100644 index cada05561..000000000 --- a/packages/account-export/src/lib/components/NoInterface.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from "react"; -import { ModalHeader } from "./ModalHeader"; - -interface NoInterfaceProps { - src: string | undefined; - name: string | undefined; - alertMessage: string | null; - onCloseModal: () => void; - onBack: () => void; -} - -export const NoInterface: React.FC = ({ - src, - name, - alertMessage, - onCloseModal, - onBack, -}) => ( -
- -
-
- {name} -
-

{name}

-

{alertMessage}

-
-
-); diff --git a/packages/account-export/src/lib/components/Passphrase.tsx b/packages/account-export/src/lib/components/Passphrase.tsx deleted file mode 100644 index 93b620db4..000000000 --- a/packages/account-export/src/lib/components/Passphrase.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import React, { Fragment, useEffect, useState } from "react"; -import { generateSecretKey } from "../helpers"; -import { translate } from "@near-wallet-selector/core"; -import { ModalHeader } from "./ModalHeader"; -import { ClickToCopy } from "./ClickToCopy"; - -export interface PassphraseProps { - onNextStep: () => void; - hasCopied: boolean; - setHasCopied: (hasCopied: boolean) => void; - onCloseModal: () => void; - onBack: () => void; - onPassphraseSave: (passphrase: string) => void; -} - -export const Passphrase: React.FC = ({ - onNextStep, - hasCopied, - setHasCopied, - onCloseModal, - onBack, - onPassphraseSave, -}) => { - const [secretKey, setSecretKey] = useState(""); - - useEffect(() => { - const key = generateSecretKey(); - setSecretKey(key); - }, []); - - const onButtonClick = () => { - onNextStep(); - }; - - const onCheck = (e: React.ChangeEvent) => { - setHasCopied(e.target.checked); - onPassphraseSave(secretKey); - }; - - return ( - - -
-
-

- {translate("modal.exportAccounts.getPassphrase.desc")} -

- -
{secretKey}
-
- -
-
-
- - -
-
- -
-
- - ); -}; diff --git a/packages/account-export/src/lib/components/WalletList.tsx b/packages/account-export/src/lib/components/WalletList.tsx deleted file mode 100644 index 2ec99219f..000000000 --- a/packages/account-export/src/lib/components/WalletList.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import React, { useEffect, useState } from "react"; -import type { - WalletSelector, - ModuleState, - Wallet, -} from "@near-wallet-selector/core"; -import { translate } from "@near-wallet-selector/core"; - -interface WalletListProps { - selector: WalletSelector; - handleWalletClick: (module: ModuleState) => void; -} - -export const WalletList: React.FC = ({ - selector, - handleWalletClick, -}) => { - const [modules, setModules] = useState>([]); - const [activeWalletId, setActiveWalletId] = useState(""); - - useEffect(() => { - const subscription = selector.store.observable.subscribe((state) => { - setModules(state.modules); - }); - return () => subscription.unsubscribe(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - function renderOptionsList(modulesToRender: Array>) { - return modulesToRender.reduce>( - (result, module, index) => { - const { selectedWalletId } = selector.store.getState(); - const { name, iconUrl, deprecated } = module.metadata; - const selected = module.id === selectedWalletId; - - result.push( -
  • { - if (module.id === modulesToRender[index].id) { - setActiveWalletId(module.id!); - } - return handleWalletClick(module); - }} - > -
    - {name} -
    -
    -
    {name}
    -
    - {translate(`modal.exportAccounts.walletTypes.${module.type}`)} -
    -
    - {deprecated && ( -
    - - - - - -
    - )} -
  • - ); - - return result; - }, - [] - ); - } - - return ( -
    - {selector.options.optimizeWalletOrder && - selector.store.getState().recentlySignedInWallets.length > 0 ? ( -
    -
    -
    - {renderOptionsList(modules)} -
    -
    -
    - ) : ( -
    -
    {renderOptionsList(modules)}
    -
    - )} -
    - ); -}; diff --git a/packages/account-export/src/lib/components/WalletNotInstalled.tsx b/packages/account-export/src/lib/components/WalletNotInstalled.tsx deleted file mode 100644 index 4589520c7..000000000 --- a/packages/account-export/src/lib/components/WalletNotInstalled.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React, { Fragment } from "react"; -import type { ModuleState } from "@near-wallet-selector/core"; -import { ModalHeader } from "./ModalHeader"; -import { BackArrow } from "./BackArrow"; -import { translate } from "@near-wallet-selector/core"; - -interface WalletNotInstalledProps { - module: ModuleState & { - metadata: { - downloadUrl?: string; - }; - }; - onBack: () => void; - onCloseModal: () => void; -} - -export const WalletNotInstalled: React.FC = ({ - module, - onBack, - onCloseModal, -}) => { - return ( - -
    - - -
    -
    -
    -
    - {module.metadata.name} -
    -

    {module.metadata.name}

    -
    -

    - {translate("modal.install.youllNeedToInstall")} {module.metadata.name}{" "} - {translate("modal.install.toContinueAfterInstalling")} - window.location.reload()} - > - {" "} - {translate("modal.install.refreshThePage")} - -

    -
    - -
    -
    -
    - ); -}; diff --git a/packages/account-export/src/lib/helpers/importAccount.spec.ts b/packages/account-export/src/lib/helpers/importAccount.spec.ts deleted file mode 100644 index 0abea9200..000000000 --- a/packages/account-export/src/lib/helpers/importAccount.spec.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @jest-environment node - */ -// why we used it, find out here - https://stackoverflow.com/questions/68468203/why-am-i-getting-textencoder-is-not-defined-in-jest -import type { AccountImportData } from "@near-wallet-selector/core"; - -import { - encryptAccountData, - decryptAccountData, - generateSecretKey, -} from "./importAccount"; - -describe("import account utils", () => { - const accountData: Array = [ - { - accountId: "test.near", - privateKey: "test123", - }, - { - accountId: "test2.near", - privateKey: "test456", - }, - ]; - it("encryption and decryption accountData", () => { - const secretKey = generateSecretKey(); - const ciphertext = encryptAccountData({ accountData, secretKey }); - const decryptedAccountData = decryptAccountData({ ciphertext, secretKey }); - - expect(accountData).toEqual(decryptedAccountData); - }); - - it("Fail to encryptAccountData if secretKey is missing", () => { - const secretKey = ""; - expect(() => encryptAccountData({ accountData, secretKey })).toThrow( - "Secret key is required" - ); - }); - - it("Fail to decryptAccountData if secretKey is missing", () => { - const secretKey = generateSecretKey(); - const invalidSecretKey = ""; - const ciphertext = encryptAccountData({ accountData, secretKey }); - expect(() => - decryptAccountData({ - ciphertext, - secretKey: invalidSecretKey, - }) - ).toThrow("Secret key is required"); - }); - - it("Fail to decryptAccountData if cipher text is missing", () => { - const secretKey = generateSecretKey(); - const ciphertext = ""; - expect(() => - decryptAccountData({ - ciphertext, - secretKey, - }) - ).toThrow("Unable to decrypt account data"); - }); -}); diff --git a/packages/account-export/src/lib/helpers/importAccount.ts b/packages/account-export/src/lib/helpers/importAccount.ts deleted file mode 100644 index a89fb45d0..000000000 --- a/packages/account-export/src/lib/helpers/importAccount.ts +++ /dev/null @@ -1,86 +0,0 @@ -import type { AccountImportData } from "@near-wallet-selector/core"; -import { secretbox } from "@noble/ciphers/salsa"; -import { randomBytes } from "@noble/hashes/utils"; -import { base64 } from "ethers/lib/utils"; - -interface DecryptAccountDataProps { - ciphertext: string; - secretKey: string; -} - -interface EncryptAccountDataProps { - accountData: Array; - secretKey: string; -} - -const Sizes = { - NONCE: 24, -}; - -export const encryptAccountData = ({ - accountData, - secretKey, -}: EncryptAccountDataProps): string => { - if (!secretKey) { - throw new Error("Secret key is required"); - } - try { - const keyUint8Array = base64.decode( - Buffer.from(secretKey).toString("base64") - ); - - const messageUint8Array = stringToUint8Array(JSON.stringify(accountData)); - const nonce = randomBytes(Sizes.NONCE); - const box = secretbox(keyUint8Array, nonce).seal(messageUint8Array); - const fullMessage = new Uint8Array(nonce.length + box.length); - fullMessage.set(nonce); - fullMessage.set(box, nonce.length); - - return Buffer.from(fullMessage).toString("base64"); - } catch (e) { - throw new Error("Unable to encrypt account data"); - } -}; - -export const decryptAccountData = ({ - ciphertext, - secretKey, -}: DecryptAccountDataProps): Array => { - if (!secretKey) { - throw new Error("Secret key is required"); - } - try { - const keyUint8Array = base64.decode( - Buffer.from(secretKey).toString("base64") - ); - const messageWithNonceAsUint8Array = base64.decode(ciphertext); - const nonce = messageWithNonceAsUint8Array.slice(0, Sizes.NONCE); - const message = messageWithNonceAsUint8Array.slice( - Sizes.NONCE, - ciphertext.length - ); - const decrypted = secretbox(keyUint8Array, nonce).open(message); - if (!decrypted) { - throw new Error("Unable to decrypt account data"); - } - - return JSON.parse(uint8ArrayToString(decrypted)); - } catch { - throw new Error("Unable to decrypt account data"); - } -}; - -export const generateSecretKey = (): string => { - const random = randomBytes(Sizes.NONCE); - return Buffer.from(random).toString("base64"); -}; - -const stringToUint8Array = (str: string) => { - const encoder = new TextEncoder(); - return encoder.encode(str); -}; - -const uint8ArrayToString = (arr: Uint8Array) => { - const decoder = new TextDecoder(); - return decoder.decode(arr); -}; diff --git a/packages/account-export/src/lib/helpers/index.ts b/packages/account-export/src/lib/helpers/index.ts deleted file mode 100644 index 5f9b67883..000000000 --- a/packages/account-export/src/lib/helpers/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./importAccount"; diff --git a/packages/account-export/src/lib/index.tsx b/packages/account-export/src/lib/index.tsx deleted file mode 100644 index dfce25bd8..000000000 --- a/packages/account-export/src/lib/index.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import React from "react"; -import type { Root } from "react-dom/client"; -import { createRoot } from "react-dom/client"; -import type { WalletSelector } from "@near-wallet-selector/core"; - -import type { WalletSelectorModal, ExportSelectorOptions } from "./index.types"; -import { ExportSelector } from "./components/ExportSelector"; - -const MODAL_ELEMENT_ID = "near-wallet-selector-modal"; - -let importModalInstance: WalletSelectorModal | null = null; -let root: Root | null = null; - -export const setupExportSelectorModal = ( - selector: WalletSelector, - options: ExportSelectorOptions -): WalletSelectorModal => { - if (!root) { - const body = document.body; - const container = document.createElement("div"); - container.id = MODAL_ELEMENT_ID; - body.appendChild(container); - - root = createRoot(container); - } - - const render = (visible: boolean) => { - root!.render( - render(false)} - /> - ); - }; - - if (!importModalInstance) { - importModalInstance = { - show: () => { - render(true); - }, - hide: () => { - render(false); - }, - }; - } - - return importModalInstance; -}; - -export { decryptAccountData } from "./helpers"; diff --git a/packages/account-export/src/lib/index.types.ts b/packages/account-export/src/lib/index.types.ts deleted file mode 100644 index fcb7249cd..000000000 --- a/packages/account-export/src/lib/index.types.ts +++ /dev/null @@ -1,64 +0,0 @@ -import type { - AccountImportData, - ModuleState, -} from "@near-wallet-selector/core"; - -export type Theme = "dark" | "light" | "auto"; - -type ExportSelectorOnCompleteParams = { - accounts: Array; - walletName: string; -}; - -export interface ExportSelectorOptions { - theme?: Theme; - description?: string; - accounts: Array; - onComplete?: (completeProps: ExportSelectorOnCompleteParams) => void; -} - -export interface WalletSelectorModal { - show(): void; - hide(): void; -} - -type AlertMessageModalRouteParams = { - module: ModuleState; -}; - -export type DerivationPathModalRouteParams = { - walletId: string; -}; - -type WalletNotInstalledModalRouteParams = { - module: ModuleState; -}; - -type ExportAccountsParams = { - module: ModuleState; -}; - -type AlertMessageModalRoute = { - name: "AlertMessage"; - params?: AlertMessageModalRouteParams; -}; - -type WalletNotInstalledModalRoute = { - name: "WalletNotInstalled"; - params?: WalletNotInstalledModalRouteParams; -}; - -type WalletHome = { - name: "WalletHome"; -}; - -export type ExportAccounts = { - name: "ExportAccounts"; - params?: ExportAccountsParams; -}; - -export type ModalRoute = - | AlertMessageModalRoute - | WalletNotInstalledModalRoute - | WalletHome - | ExportAccounts; diff --git a/packages/account-export/src/lib/styles.css b/packages/account-export/src/lib/styles.css deleted file mode 100644 index 2c86ad387..000000000 --- a/packages/account-export/src/lib/styles.css +++ /dev/null @@ -1,319 +0,0 @@ -/* TODO: Find a way to import styles.css file from modal-ui */ - -.nws-modal-wrapper .nws-modal .wallet-options-wrapper .options-list .single-wallet.sidebar .import-content { - width: auto; -} -.nws-modal-wrapper .nws-modal .wallet-options-wrapper .options-list .single-wallet.sidebar.selected-wallet .import-content .title, -.nws-modal-wrapper .nws-modal .wallet-options-wrapper .options-list .single-wallet.sidebar.selected-wallet .import-content .import-type { - color: #FFFFFF; -} -.nws-modal-wrapper .nws-modal .wallet-options-wrapper .options-list .single-wallet.sidebar .import-content .title { - font-size: 14px; - color: var(--wallet-selector-heading-color, var(--heading-color)); - margin-left: 10px; -} - -.import-content .import-type { - font-size: 10px; - margin-left: 10px; - margin-top: 2px; - font-weight: 400; -} - -.nws-modal-wrapper .nws-modal .modal-right .middleContainer { - display: flex; - flex-direction: column; - align-content: center; - width: 100%; -} - - -.nws-modal-wrapper .nws-modal .modal-right .middleContainer p { - margin: 0; - text-align: center; - font-weight: 400; - font-size: 14px; -} - -.nws-modal-wrapper .nws-modal .nws-modal-body button.middleButton:disabled, -.nws-modal-wrapper .nws-modal .nws-modal-body button.middleButton[disabled]{ - cursor: not-allowed; - background-color: var(--wallet-selector-home-button-bg, var(--home-button-bg)); - color: #606060; - border: 1px solid transparent; -} - - -.nws-modal-wrapper .nws-modal .nws-modal-body button.middleButton.account-export-button { - width: 300px; - margin: 0 auto; -} - -.nws-modal-wrapper .nws-modal .nws-modal-body button.middleButton.account-export-button.secondary { - background: var( --secondary-button-bg-color); - border: 1px solid var(--secondary-button-border-color); - border-radius: 4px; - color: var(--secondary-button-text-color); - margin-bottom: 10px; -} - -.checkbox { - position: relative; - display: flex; - margin: 10px; -} - -.checkbox label { - position: relative; - display: block; - padding-left: 40px; - margin-bottom: 0; - cursor: pointer; - color: var(--wallet-selector-heading-color, var(--heading-color)); -} - -.checkbox label::before { - content: ''; - position: absolute; - left: 0; - top: -2px; - margin: 4px; - width: 18px; - height: 18px; - transition: transform 0.28s ease; - border-radius: 3px; - border: 2px solid #C1C1C1; -} - -.checkbox label::after { - content: ''; - display: block; - width: 10px; - height: 5px; - border-bottom: 2px solid #4FD98F; - border-left: 2px solid #4FD98F; - transform: rotate(-45deg) scale(0); - transition: transform ease 0.25s; - position: absolute; - top: 8px; - left: 10px; -} - -.checkbox input[type="checkbox"] { - width: auto; - opacity: 0; - position: absolute; - left: 0; - margin-left: -20px; - margin-top: 0px; -} - -.checkbox input[type="checkbox"]:checked + label::before { - border: 2px solid #4FD98F; - background-color: rgba(79, 217, 143, 0.3); -} - -.checkbox input[type="checkbox"]:checked + label::after { - transform: rotate(-45deg) scale(1); -} - -.checkbox input[type="checkbox"]:focus + label::before { - outline: 0; -} - -.checkbox input[type="checkbox"]:disabled + label { - color: var(--wallet-selector-text-color, var(--text-color)); - cursor: not-allowed; - display: flex; - flex-direction: column; -} - -.checkbox input[type="checkbox"]:disabled + label > span.error { - color: var(--wallet-selector-error, var(--error)); - font-size: 10px; -} - -.checkbox input[type="checkbox"]:disabled + label > span.warning { - color: #E9B870; - font-size: 10px; -} - -.checkbox input[type="checkbox"]:disabled + label::before { - border: 2px solid #606060; -} - -.nws-modal-wrapper .nws-modal .nws-modal-body .click-to-copy { - position: relative; - cursor: copy; - background-color: var(--wallet-selector-content-bg, var(--content-bg)); - display: block; - margin: 0 auto; - border-radius: 8px; - border: 1px solid var(--wallet-option-border-color, var(--sidebar-border-color)); - padding: 0; - filter: brightness(95%); -} - -.nws-modal-wrapper .nws-modal .nws-modal-body .click-to-copy > .copy-success { - position: absolute; - left: 50%; - transform: translate(-50%, 0); - text-align: center; - background-color: #8decc6; - color: #005a46; - border-radius: 4px; - padding: 6px 8px; - font-size: 13px; - top: -30px; - opacity: 0; - pointer-events: none; - transition: 200ms; - font-weight: 400; -} - -.nws-modal-wrapper .nws-modal .nws-modal-body .click-to-copy > .copy-success.show { - top: -40px; - opacity: 1; -} - -/************* Import Accounts **********/ -.account-export-body { - height: 100%; - display: flex; - flex-direction: column; -} - -.account-export { - height: 100%; - margin-top: 0px !important; - padding: 0px !important; -} - -.account-export .content { - width: 100%; - height: 100%; - padding: 25px 0 0 !important; - display: flex; - flex-direction: column; - align-items: center; -} - -.account-export .content .account-selection-spinner { - width: 80px; - margin: auto; - margin-top: 70px; -} - -.account-export .filler { - flex: 1; -} - -.account-export .account-selection { - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; - width: 100%; - max-height: 200px; - min-height: 50px; - overflow-y: auto; - overflow-x: hidden; - margin: 20px 0; -} - -.account-export .account-selection-container { - display: flex; - flex: 1; - flex-direction: column; -} - -.account-export .account-select-all { - width: 100%; - text-align: left; - cursor: pointer; - color: var( --wallet-option-outline-color, var(--outline-color)); - font-size: 14px; -} - -.account-export .account-unavailable { - width: 100%; - color: var(--wallet-selector-text-color, var(--text-color)); - font-size: 14px; - text-align: left; -} - -.account-export .account-selection .account-selection-row { - display: flex; - flex-direction: row; - align-items: center; - width: 100%; - border-bottom: 1px solid rgba(60,60,60,0.22); -} - -.account-export .account-selection .account-selection-row label { - display: flex; - flex-direction: column; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - display: inline-block; - width: 399px; -} - -.account-export .checkbox .label { - font-size: 14px; -} - -.account-export .passphrase-title { - font-size: 14px; - text-align: center; - font-weight: 300; - color: var(--wallet-selector-text-color, var(--text-color)); - margin: 40px 0 30px; -} - -.account-export .passphrase-text { - display: flex; - flex-direction: row; - align-items: flex-start; - - background: transparent; - - word-break: break-word; - text-align: center; - - filter: blur(4px); - padding: 20px; - border-radius: 5px; -} - -.account-export .passphrase-text:hover { - filter: none; -} - -.account-export .passphrase-check-container { - margin-bottom: 20px; -} - -.account-export .passphrase-label { - font-size: 10px; - cursor: copy; - color: var(--wallet-selector-text-color, var(--text-color)); - margin-top: 10px; -} - -.complete-desc { - flex: 1; - text-align: center; - margin-top: 10px; -} - -.complete-desc .content { - font-size: 14px; - width: 300px; - margin: 40px auto 0; -} - -.nws-modal-wrapper .nws-modal .connecting-wrapper-err { - height: 100%; -} diff --git a/packages/account-export/tsconfig.json b/packages/account-export/tsconfig.json deleted file mode 100644 index 2627e7d4e..000000000 --- a/packages/account-export/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "jsx": "react-jsx", - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true, - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/account-export/tsconfig.lib.json b/packages/account-export/tsconfig.lib.json deleted file mode 100644 index e4b5275a2..000000000 --- a/packages/account-export/tsconfig.lib.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": ["node"] - }, - "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": ["jest.config.ts", "**/*.spec.ts"], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] -} diff --git a/packages/account-export/tsconfig.spec.json b/packages/account-export/tsconfig.spec.json deleted file mode 100644 index 1beaa4f31..000000000 --- a/packages/account-export/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.test.ts"] -} diff --git a/packages/arepa-wallet/.babelrc b/packages/arepa-wallet/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/arepa-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/arepa-wallet/.eslintrc.json b/packages/arepa-wallet/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/arepa-wallet/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/arepa-wallet/README.md b/packages/arepa-wallet/README.md deleted file mode 100644 index 620398a03..000000000 --- a/packages/arepa-wallet/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# @near-wallet-selector/my-near-wallet - -This is the [Arepa Wallet](https://mi.arepa.digital/) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` -```bash -# Using Yarn -yarn add @near-wallet-selector/arepa-wallet - -# Using NPM. -npm install @near-wallet-selector/arepa-wallet -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupArepaWallet } from "@near-wallet-selector/arepa-wallet"; - -// My NEAR Wallet for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const arepaWallet = setupArepaWallet({ - walletUrl: "https://develop.globaldv.tech/wallet-arepa/", - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [arepaWallet], -}); -``` - -## Options - -- `walletUrl` (`string?`): Wallet URL used to redirect when signing transactions. This parameter is required for custom network configuration. -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/arepa-wallet-icon.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. -- `successUrl`: (`string?`): SuccessUrl is optional. Default is `''` (empty string). -- `failureUrl`: (`string?`): FailureUrl is optional. Default is `''` (empty string). - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupMyNearWallet } from "@near-wallet-selector/arepa-wallet"; -import arepaWalletIconUrl from "@near-wallet-selector/arepa-wallet/assets/arepa-wallet-icon.png"; - -const arepaWallet = setupArepaWallet({ - iconUrl: arepaWalletIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/arepa-wallet/assets/arepa-wallet-icon.png b/packages/arepa-wallet/assets/arepa-wallet-icon.png deleted file mode 100644 index 20705413c..000000000 Binary files a/packages/arepa-wallet/assets/arepa-wallet-icon.png and /dev/null differ diff --git a/packages/arepa-wallet/jest.config.js b/packages/arepa-wallet/jest.config.js deleted file mode 100644 index fa21e8daf..000000000 --- a/packages/arepa-wallet/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "arepa-wallet", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/arepa-wallet", -}; diff --git a/packages/arepa-wallet/jest.config.ts b/packages/arepa-wallet/jest.config.ts deleted file mode 100644 index 531d03520..000000000 --- a/packages/arepa-wallet/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "arepa-wallet", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/arepa-wallet", -}; diff --git a/packages/arepa-wallet/package.json b/packages/arepa-wallet/package.json deleted file mode 100644 index d88a31de2..000000000 --- a/packages/arepa-wallet/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@near-wallet-selector/arepa-wallet", - "version": "8.9.13", - "description": "Arepa Wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "browser wallet", - "arepa Wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/arepa-wallet", - "peerDependencies": { - "near-api-js": "4.0.3" - } -} diff --git a/packages/arepa-wallet/project.json b/packages/arepa-wallet/project.json deleted file mode 100644 index 877484034..000000000 --- a/packages/arepa-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "arepa-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/arepa-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/arepa-wallet", - "tsConfig": "packages/arepa-wallet/tsconfig.lib.json", - "project": "packages/arepa-wallet/package.json", - "entryFile": "packages/arepa-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/arepa-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/arepa-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/arepa-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/arepa-wallet"], - "options": { - "jestConfig": "packages/arepa-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["browser-wallet"] -} diff --git a/packages/arepa-wallet/src/index.ts b/packages/arepa-wallet/src/index.ts deleted file mode 100644 index 66360c65d..000000000 --- a/packages/arepa-wallet/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupArepaWallet } from "./lib/arepa-wallet"; -export type { ArepaWalletParams } from "./lib/arepa-wallet"; diff --git a/packages/arepa-wallet/src/lib/arepa-wallet.spec.ts b/packages/arepa-wallet/src/lib/arepa-wallet.spec.ts deleted file mode 100644 index edfff1118..000000000 --- a/packages/arepa-wallet/src/lib/arepa-wallet.spec.ts +++ /dev/null @@ -1,121 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries */ -import type { - Near, - WalletConnection, - ConnectedWalletAccount, -} from "near-api-js"; -import type { AccountView } from "near-api-js/lib/providers/provider"; -import { mock } from "jest-mock-extended"; - -import { mockWallet } from "../../../core/src/lib/testUtils"; -import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; -import type { BrowserWallet } from "../../../core/src/lib/wallet"; - -const createArepaWallet = async (deps: MockWalletDependencies = {}) => { - const walletConnection = mock(); - const account = mock({ - connection: { - signer: { - getPublicKey: jest.fn().mockReturnValue(""), - }, - }, - }); - - jest.mock("near-api-js", () => { - const module = jest.requireActual("near-api-js"); - return { - ...module, - connect: jest.fn().mockResolvedValue(mock()), - WalletConnection: jest.fn().mockReturnValue(walletConnection), - }; - }); - - walletConnection.isSignedIn.calledWith().mockReturnValue(true); - walletConnection.getAccountId - .calledWith() - .mockReturnValue("test-account.testnet"); - walletConnection.account.calledWith().mockReturnValue(account); - // @ts-ignore - // near-api-js marks this method as protected. - // TODO: return value instead of null - account.signAndSendTransaction.calledWith().mockReturnValue(null); - account.state.calledWith().mockResolvedValue( - mock({ - amount: "1000000000000000000000000", - }) - ); - - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { setupArepaWallet } = require("./arepa-wallet"); - const { wallet } = await mockWallet(setupArepaWallet(), deps); - - return { - nearApiJs: require("near-api-js"), - wallet, - walletConnection, - account, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("signIn", () => { - it("sign into near wallet", async () => { - const { wallet, nearApiJs } = await createArepaWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - - expect(nearApiJs.connect).toHaveBeenCalled(); - }); -}); - -describe("signOut", () => { - it("sign out of near wallet", async () => { - const { wallet, walletConnection } = await createArepaWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signOut(); - - expect(walletConnection.signOut).toHaveBeenCalled(); - }); -}); - -describe("getAccounts", () => { - it("returns array of accounts", async () => { - const { wallet, walletConnection } = await createArepaWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.getAccounts(); - - expect(walletConnection.getAccountId).toHaveBeenCalled(); - expect(result).toEqual([ - { accountId: "test-account.testnet", publicKey: "" }, - ]); - }); -}); - -describe("signAndSendTransaction", () => { - // TODO: Figure out why imports to core are returning undefined. - it("signs and sends transaction", async () => { - const { wallet, walletConnection, account } = await createArepaWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.signAndSendTransaction({ - receiverId: "guest-book.testnet", - actions: [], - }); - - expect(walletConnection.account).toHaveBeenCalled(); - // near-api-js marks this method as protected. - // @ts-ignore - expect(account.signAndSendTransaction).toHaveBeenCalled(); - // @ts-ignore - expect(account.signAndSendTransaction).toBeCalledWith({ - actions: [], - receiverId: "guest-book.testnet", - }); - expect(result).toEqual(null); - }); -}); diff --git a/packages/arepa-wallet/src/lib/arepa-wallet.ts b/packages/arepa-wallet/src/lib/arepa-wallet.ts deleted file mode 100644 index 4be01ca12..000000000 --- a/packages/arepa-wallet/src/lib/arepa-wallet.ts +++ /dev/null @@ -1,271 +0,0 @@ -import * as nearAPI from "near-api-js"; -import type { - WalletModuleFactory, - WalletBehaviourFactory, - BrowserWallet, - Transaction, - Optional, - Network, - Account, -} from "@near-wallet-selector/core"; -import { createAction } from "@near-wallet-selector/wallet-utils"; -import icon from "./icon"; - -export interface ArepaWalletParams { - walletUrl?: string; - iconUrl?: string; - deprecated?: boolean; - successUrl?: string; - failureUrl?: string; -} - -interface ArepaWalletState { - wallet: nearAPI.WalletConnection; - keyStore: nearAPI.keyStores.BrowserLocalStorageKeyStore; -} - -interface ArepaWalletExtraOptions { - walletUrl: string; -} - -const resolveWalletUrl = (network: Network, walletUrl?: string) => { - if (walletUrl) { - return walletUrl; - } - - switch (network.networkId) { - case "mainnet": - return "https://mi.arepa.digital"; - case "testnet": - return "https://testnet.arepa.digital"; - default: - throw new Error("Invalid wallet url"); - } -}; - -const setupWalletState = async ( - params: ArepaWalletExtraOptions, - network: Network -): Promise => { - const keyStore = new nearAPI.keyStores.BrowserLocalStorageKeyStore(); - - const near = await nearAPI.connect({ - keyStore, - walletUrl: params.walletUrl, - ...network, - headers: {}, - }); - - const wallet = new nearAPI.WalletConnection(near, "near_app"); - - return { - wallet, - keyStore, - }; -}; - -const ArepaWallet: WalletBehaviourFactory< - BrowserWallet, - { params: ArepaWalletExtraOptions } -> = async ({ metadata, options, store, params, logger, id }) => { - const _state = await setupWalletState(params, options.network); - const getAccounts = async (): Promise> => { - const accountId = _state.wallet.getAccountId(); - const account = _state.wallet.account(); - - if (!accountId || !account) { - return []; - } - - const publicKey = await account.connection.signer.getPublicKey( - account.accountId, - options.network.networkId - ); - return [ - { - accountId, - publicKey: publicKey ? publicKey.toString() : "", - }, - ]; - }; - - const transformTransactions = async ( - transactions: Array> - ) => { - const account = _state.wallet.account(); - const { networkId, signer, provider } = account.connection; - - const localKey = await signer.getPublicKey(account.accountId, networkId); - - return Promise.all( - transactions.map(async (transaction, index) => { - const actions = transaction.actions.map((action) => - createAction(action) - ); - const accessKey = await account.accessKeyForTransaction( - transaction.receiverId, - actions, - localKey - ); - - if (!accessKey) { - throw new Error( - `Failed to find matching key for transaction sent to ${transaction.receiverId}` - ); - } - - const block = await provider.block({ finality: "final" }); - - return nearAPI.transactions.createTransaction( - account.accountId, - nearAPI.utils.PublicKey.from(accessKey.public_key), - transaction.receiverId, - accessKey.access_key.nonce + index + 1, - actions, - nearAPI.utils.serialize.base_decode(block.header.hash) - ); - }) - ); - }; - - return { - async signIn({ contractId, methodNames, successUrl, failureUrl }) { - const existingAccounts = await getAccounts(); - - if (existingAccounts.length) { - return existingAccounts; - } - - await _state.wallet.requestSignIn({ - contractId, - methodNames, - successUrl, - failureUrl, - }); - - return getAccounts(); - }, - - async signOut() { - if (_state.wallet.isSignedIn()) { - _state.wallet.signOut(); - } - }, - - async getAccounts() { - return getAccounts(); - }, - - async verifyOwner() { - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signMessage({ message, nonce, recipient, callbackUrl, state }) { - logger.log("sign message", { message }); - - if (id !== "arepa-wallet") { - throw Error( - `The signMessage method is not supported by ${metadata.name}` - ); - } - - const locationUrl = - typeof window !== "undefined" ? window.location.href : ""; - - const url = callbackUrl || locationUrl; - - if (!url) { - throw new Error(`The callbackUrl is missing for ${metadata.name}`); - } - - const href = new URL(params.walletUrl); - href.pathname = "sign-message"; - href.searchParams.append("message", message); - href.searchParams.append("nonce", nonce.toString("base64")); - href.searchParams.append("recipient", recipient); - href.searchParams.append("callbackUrl", url); - if (state) { - href.searchParams.append("state", state); - } - - window.location.replace(href.toString()); - - return; - }, - - async signAndSendTransaction({ - signerId, - receiverId, - actions, - callbackUrl, - }) { - logger.log("signAndSendTransaction", { - signerId, - receiverId, - actions, - callbackUrl, - }); - - const { contract } = store.getState(); - - if (!_state.wallet.isSignedIn() || !contract) { - throw new Error("Wallet not signed in"); - } - - const account = _state.wallet.account(); - - return account["signAndSendTransaction"]({ - receiverId: receiverId || contract.contractId, - actions: actions.map((action) => createAction(action)), - walletCallbackUrl: callbackUrl, - }); - }, - - async signAndSendTransactions({ transactions, callbackUrl }) { - logger.log("signAndSendTransactions", { transactions, callbackUrl }); - - if (!_state.wallet.isSignedIn()) { - throw new Error("Wallet not signed in"); - } - - return _state.wallet.requestSignTransactions({ - transactions: await transformTransactions(transactions), - callbackUrl, - }); - }, - }; -}; - -export function setupArepaWallet({ - walletUrl, - iconUrl = icon, - deprecated = false, - successUrl = "", - failureUrl = "", -}: ArepaWalletParams = {}): WalletModuleFactory { - return async (moduleOptions) => { - return { - id: "arepa-wallet", - type: "browser", - metadata: { - name: "ArepaWallet", - description: - "NEAR wallet to store, buy, send and stake assets for DeFi.", - iconUrl, - deprecated, - available: true, - successUrl, - failureUrl, - walletUrl: resolveWalletUrl(moduleOptions.options.network, walletUrl), - }, - init: (options) => { - return ArepaWallet({ - ...options, - params: { - walletUrl: resolveWalletUrl(options.options.network, walletUrl), - }, - }); - }, - }; - }; -} diff --git a/packages/arepa-wallet/src/lib/icon.ts b/packages/arepa-wallet/src/lib/icon.ts deleted file mode 100644 index b3d406ad9..000000000 --- a/packages/arepa-wallet/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/arepa-wallet/tsconfig.json b/packages/arepa-wallet/tsconfig.json deleted file mode 100644 index 8b6d6acaf..000000000 --- a/packages/arepa-wallet/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/arepa-wallet/tsconfig.lib.json b/packages/arepa-wallet/tsconfig.lib.json deleted file mode 100644 index b3f90c22f..000000000 --- a/packages/arepa-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/arepa-wallet/tsconfig.spec.json b/packages/arepa-wallet/tsconfig.spec.json deleted file mode 100644 index 546f12877..000000000 --- a/packages/arepa-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} diff --git a/packages/bitget-wallet/.babelrc b/packages/bitget-wallet/.babelrc deleted file mode 100644 index d5e7f8c7d..000000000 --- a/packages/bitget-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} \ No newline at end of file diff --git a/packages/bitget-wallet/.eslintrc.json b/packages/bitget-wallet/.eslintrc.json deleted file mode 100644 index abd6568fe..000000000 --- a/packages/bitget-wallet/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] - } \ No newline at end of file diff --git a/packages/bitget-wallet/README.md b/packages/bitget-wallet/README.md deleted file mode 100644 index bd33921e9..000000000 --- a/packages/bitget-wallet/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# @near-wallet-selector/bitget-wallet - -This is the [Bitget Wallet](https://chromewebstore.google.com/detail/bitget-wallet-formerly-bi/jiidiaalihmmhddjgbnbgdfflelocpak) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` -```bash -# Using Yarn -yarn add @near-wallet-selector/bitget-wallet - -# Using NPM. -npm install @near-wallet-selector/bitget-wallet -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupBitgetWallet } from "@near-wallet-selector/bitget-wallet"; - -// Bitget Wallet for Wallet Selector can be setup without any params or it can take one optional param. -const bitgetWallet = setupBitgetWallet()); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [bitgetWallet], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/bitget-wallet-icon`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupBitgetWallet } from "@near-wallet-selector/bitget-wallet"; -import bitgetWalletIconUrl from "@near-wallet-selector/bitget-wallet/assets/bitget-wallet-icon"; - -const bitgetWallet = setupBitgetWallet({ - iconUrl: bitgetWalletIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/bitget-wallet/assets/bitget-wallet-icon.png b/packages/bitget-wallet/assets/bitget-wallet-icon.png deleted file mode 100644 index a8e511f27..000000000 Binary files a/packages/bitget-wallet/assets/bitget-wallet-icon.png and /dev/null differ diff --git a/packages/bitget-wallet/jest.config.js b/packages/bitget-wallet/jest.config.js deleted file mode 100644 index 31a489e1b..000000000 --- a/packages/bitget-wallet/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "bitget-wallet", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/bitget-wallet", -}; \ No newline at end of file diff --git a/packages/bitget-wallet/jest.config.ts b/packages/bitget-wallet/jest.config.ts deleted file mode 100644 index f7fe8a1ff..000000000 --- a/packages/bitget-wallet/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "bitget-wallet", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/bitget-wallet", -}; \ No newline at end of file diff --git a/packages/bitget-wallet/package.json b/packages/bitget-wallet/package.json deleted file mode 100644 index b0909194a..000000000 --- a/packages/bitget-wallet/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/bitget-wallet", - "version": "8.9.13", - "description": "Bitget wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "Bitget wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/bitget-wallet" -} diff --git a/packages/bitget-wallet/project.json b/packages/bitget-wallet/project.json deleted file mode 100644 index 76009694c..000000000 --- a/packages/bitget-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "bitget-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/bitget-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/bitget-wallet", - "tsConfig": "packages/bitget-wallet/tsconfig.lib.json", - "project": "packages/bitget-wallet/package.json", - "entryFile": "packages/bitget-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/bitget-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/bitget-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/bitget-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/bitget-wallet"], - "options": { - "jestConfig": "packages/bitget-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} \ No newline at end of file diff --git a/packages/bitget-wallet/src/index.ts b/packages/bitget-wallet/src/index.ts deleted file mode 100644 index 0fa44d124..000000000 --- a/packages/bitget-wallet/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { setupBitgetWallet } from "./lib/bitget-wallet"; diff --git a/packages/bitget-wallet/src/lib/bitget-wallet.spec.ts b/packages/bitget-wallet/src/lib/bitget-wallet.spec.ts deleted file mode 100644 index 2c03a47b2..000000000 --- a/packages/bitget-wallet/src/lib/bitget-wallet.spec.ts +++ /dev/null @@ -1,149 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries */ -import { mock } from "jest-mock-extended"; -import { mockWallet } from "../../../core/src/lib/testUtils"; -import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; -import type { InjectedWallet } from "../../../core/src/lib/wallet"; -import type { - AccessKey, - BitgetWalletEvents, - SignOutResponse, -} from "./injected-bitget-wallet"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; -import { setupBitgetWallet } from "./bitget-wallet"; - -const accountId = "test-account.testnet"; -const transactions = [ - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, -]; - -const mockBitgetWalletOnWindow = () => { - window.bitkeep = { - near: { - isBitKeepChrome: true, - callbacks: mock(), - getAccountId: jest.fn().mockReturnValue(""), - requestSignIn: jest.fn(async () => { - window.bitkeep.near!.getAccountId = jest - .fn() - .mockReturnValue(accountId); - - return { - accessKey: mock(), - error: "", - notificationId: 0, - type: "bitget-wallet-result" as const, - }; - }), - signOut: jest.fn().mockReturnValue(mock()), - isSignedIn: jest.fn().mockReturnValue(true), - remove: jest.fn(), - on: jest.fn(), - signAndSendTransaction: jest.fn().mockReturnValue( - Promise.resolve({ - error: undefined, - response: mock(), - }) - ), - getPublicKey: jest.fn().mockReturnValue(""), - verifyOwner: jest.fn(), - requestSignTransactions: jest.fn().mockReturnValue( - Promise.resolve({ - error: undefined, - response: mock>( - new Array(transactions.length).fill({}) - ), - }) - ), - }, - }; - return window.bitkeep.near; -}; - -const createBitgetWallet = async (deps: MockWalletDependencies = {}) => { - const injectedBitgetWallet = mockBitgetWalletOnWindow(); - const { wallet } = await mockWallet( - setupBitgetWallet(), - deps - ); - - return { - wallet, - injectedBitgetWallet, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("signIn", () => { - it("sign into Bitget Wallet", async () => { - const { wallet, injectedBitgetWallet } = await createBitgetWallet(); - - const accounts = await wallet.signIn({ contractId: "test.testnet" }); - - expect(injectedBitgetWallet?.requestSignIn).toHaveBeenCalled(); - expect(accounts).toEqual([{ accountId, publicKey: undefined }]); - }); -}); - -describe("signOut", () => { - it("sign out of Bitget Wallet", async () => { - const { wallet, injectedBitgetWallet } = await createBitgetWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signOut(); - - expect(injectedBitgetWallet?.signOut).toHaveBeenCalled(); - }); -}); - -describe("getAccounts", () => { - it("returns array of accounts", async () => { - const { wallet, injectedBitgetWallet } = await createBitgetWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.getAccounts(); - - expect(injectedBitgetWallet?.getAccountId).toHaveBeenCalled(); - expect(result).toEqual([{ accountId, publicKey: undefined }]); - }); -}); - -describe("signAndSendTransaction", () => { - it("sign transaction in Bitget Wallet", async () => { - const { wallet, injectedBitgetWallet } = await createBitgetWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signAndSendTransaction({ - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }); - - expect(injectedBitgetWallet?.signAndSendTransaction).toHaveBeenCalled(); - }); -}); - -describe("signAndSendTransactions", () => { - it("sign transactions in Bitget Wallet", async () => { - const { wallet, injectedBitgetWallet } = await createBitgetWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.signAndSendTransactions({ - transactions, - }); - - expect(injectedBitgetWallet?.requestSignTransactions).toHaveBeenCalled(); - expect(result.length).toEqual(transactions.length); - }); -}); diff --git a/packages/bitget-wallet/src/lib/bitget-wallet.ts b/packages/bitget-wallet/src/lib/bitget-wallet.ts deleted file mode 100644 index 69fa693b3..000000000 --- a/packages/bitget-wallet/src/lib/bitget-wallet.ts +++ /dev/null @@ -1,284 +0,0 @@ -import { isMobile } from "is-mobile"; -import type { - WalletModuleFactory, - WalletBehaviourFactory, - InjectedWallet, - Transaction, - Optional, - Account, -} from "@near-wallet-selector/core"; -import { waitFor } from "@near-wallet-selector/core"; -import type { InjectedBitgetWallet } from "./injected-bitget-wallet"; -import icon from "./icon"; - -declare global { - interface Window { - bitkeep: { - near: InjectedBitgetWallet | undefined; - }; - } -} - -export interface BitgetWalletParams { - iconUrl?: string; - deprecated?: boolean; -} - -interface BitgetWalletState { - wallet: InjectedBitgetWallet; -} - -const isInstalled = () => { - return waitFor(() => !!window.bitkeep.near).catch(() => false); -}; - -const setupBitgetWalletState = (): BitgetWalletState => { - const wallet = window.bitkeep.near!; - return { - wallet, - }; -}; - -const BitgetWallet: WalletBehaviourFactory = async ({ - options, - store, - provider, - emitter, - logger, -}) => { - const _state = setupBitgetWalletState(); - - const cleanup = () => { - for (const key in _state.wallet.callbacks) { - _state.wallet.remove(key); - } - }; - - const signOut = async () => { - if (!_state.wallet.isSignedIn()) { - return; - } - - cleanup(); - const res = await _state.wallet.signOut(); - - if (res === true) { - return; - } - - const error = new Error( - typeof res.error === "string" ? res.error : res.error.type - ); - - // Prevent signing out by throwing. - if (error.message === "User reject") { - throw error; - } - - // Continue signing out but log the issue. - logger.log("Failed to sign out"); - logger.error(error); - }; - - const setupEvents = () => { - _state.wallet.on("accountChanged", async (newAccountId) => { - logger.log("onAccountChange", newAccountId); - emitter.emit("signedOut", null); - }); - - _state.wallet.on("rpcChanged", async (rpc) => { - logger.log("onNetworkChange", rpc); - - if (options.network.networkId !== rpc.networkId) { - await signOut(); - - emitter.emit("signedOut", null); - emitter.emit("networkChanged", { networkId: rpc.networkId }); - } - }); - }; - - const getAccounts = async (): Promise> => { - const accountId = _state.wallet.getAccountId() || ""; - if (!accountId) { - return []; - } - - const publicKey = await _state.wallet.getPublicKey(); - - return [ - { - accountId, - publicKey: publicKey ? publicKey.toString() : undefined, - }, - ]; - }; - - const transformTransactions = ( - transactions: Array> - ) => { - return transactions.map((transaction) => { - return { - receiverId: transaction.receiverId, - actions: transaction.actions, - }; - }); - }; - - if (_state.wallet && _state.wallet.isSignedIn()) { - setupEvents(); - } - - return { - async signIn({ contractId, methodNames }) { - const existingAccounts = await getAccounts(); - - if (existingAccounts.length) { - return existingAccounts; - } - - const { accessKey, error } = await _state.wallet.requestSignIn({ - contractId, - methodNames, - }); - - // debugger; - if (!accessKey || error) { - await signOut(); - throw new Error( - (typeof error === "string" ? error : error.type) || - "Failed to sign in" - ); - } - - setupEvents(); - - return await getAccounts(); - }, - signOut, - async getAccounts() { - return getAccounts(); - }, - async verifyOwner({ message }) { - logger.log("Bitget-wallet:verifyOwner", { message }); - - const networkId = options.network.networkId; - const accountId = await _state.wallet.getAccountId(); - const pubKey = await _state.wallet.getPublicKey(); - - const block = await provider.block({ finality: "final" }); - - const data = { - accountId, - message, - blockId: block.header.hash, - publicKey: pubKey, - keyType: "0", - }; - const encoded = JSON.stringify(data); - - const signed = await _state.wallet.verifyOwner( - encoded, - accountId, - networkId - ); - return { - ...data, - signature: signed.signature, - keyType: signed.keyType, - }; - }, - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - - const { contract } = store.getState(); - - if (!_state.wallet.isSignedIn() || !contract) { - throw new Error("Wallet not signed in"); - } - - return _state.wallet - .signAndSendTransaction({ - receiverId: receiverId || contract.contractId, - actions: actions, - }) - .then((res) => { - if (res.error) { - throw new Error(res.error); - } else if (res.response && "error" in res.response) { - throw new Error(res.response.error.message); - } - - // Shouldn't happen but avoids inconsistent responses. - if (!res.response?.length) { - throw new Error("Invalid response"); - } - - return res.response[0]; - }); - }, - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - if (!_state.wallet.isSignedIn()) { - throw new Error("Wallet not signed in"); - } - - return _state.wallet - .requestSignTransactions({ - transactions: transformTransactions(transactions), - }) - .then((res) => { - if (res.error) { - throw new Error(res.error); - } else if (res.response && "error" in res.response) { - throw new Error(res.response.error.message); - } - - // Shouldn't happen but avoids inconsistent responses. - if (!res.response?.length) { - throw new Error("Invalid response"); - } - - return res.response; - }); - }, - }; -}; - -export function setupBitgetWallet({ - iconUrl = icon, - deprecated = false, -}: BitgetWalletParams = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - - const installed = await isInstalled(); - // Add extra wait to ensure Bitget Wallet's sign in status is read from the - // browser extension background env. - // Check for isSignedIn() in only if extension is installed. - if (installed) { - await waitFor(() => !!window.bitkeep?.near?.isSignedIn()).catch( - () => false - ); - } - - return { - id: "bitget-wallet", - type: "injected", - metadata: { - name: "Bitget Wallet", - description: "Browser extension wallet built on NEAR.", - iconUrl, - downloadUrl: - "https://chrome.google.com/webstore/detail/bitkeep-crypto-nft-wallet/jiidiaalihmmhddjgbnbgdfflelocpak", - deprecated, - available: installed, - }, - init: BitgetWallet, - }; - }; -} diff --git a/packages/bitget-wallet/src/lib/icon.ts b/packages/bitget-wallet/src/lib/icon.ts deleted file mode 100644 index 70a88e483..000000000 --- a/packages/bitget-wallet/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/bitget-wallet/src/lib/injected-bitget-wallet.ts b/packages/bitget-wallet/src/lib/injected-bitget-wallet.ts deleted file mode 100644 index f1e671156..000000000 --- a/packages/bitget-wallet/src/lib/injected-bitget-wallet.ts +++ /dev/null @@ -1,126 +0,0 @@ -import type { providers } from "near-api-js"; -import type { AccountImportData, Action } from "@near-wallet-selector/core"; - -export interface AccessKey { - publicKey: { - data: Uint8Array; - keyType: number; - }; - secretKey: string; -} - -interface RequestSignInResponse { - accessKey: AccessKey; - error: string | { type: string }; - notificationId: number; - type: "bitget-wallet-result"; -} - -export type SignOutResponse = true | { error: string | { type: string } }; - -interface RequestSignInParams { - contractId: string; - methodNames?: Array; - amount?: string; // in yoctoⓃ -} - -interface RpcChangedResponse { - explorerUrl: string; - helperUrl: string; - index: number; - name: string; - network: string; - networkId: string; - nodeUrl: string; - walletUrl: string; - wrapNearContract: string; -} - -export interface FunctionCallError { - error: { - index: number; - kind: object; - message: string; - transaction_outcome: object; - type: "FunctionCallError"; - }; -} - -export interface SignAndSendTransactionResponse { - actionType: "DAPP/DAPP_POPUP_RESPONSE"; - method: "signAndSendTransactions"; - notificationId: number; - error?: string; - response?: Array | FunctionCallError; - type: "bitget-wallet-extensionResult"; -} - -interface SignAndSendTransactionsResponse { - actionType: "DAPP/DAPP_POPUP_RESPONSE"; - method: "signAndSendTransactions"; - notificationId: number; - error?: string; - response?: Array | FunctionCallError; - type: "bitget-wallet-extensionResult"; -} - -export interface BitgetWalletEvents { - signIn: () => void; - signOut: () => void; - accountChanged: (changedAccountId: string) => void; - rpcChanged: (response: RpcChangedResponse) => void; -} - -export interface batchImportParams { - keystore: Array; - network: string; -} - -interface verifyOwnerResponse { - accountId: string; - message: string; - blockId: string; - publicKey: string; - keyType: 0; // TODO: get keyType from sdk wallet - signature: string; -} - -interface SignAndSendTransactionParams { - receiverId: string; - actions: Array; -} - -interface requestSignTransactionsParams { - transactions: Array<{ - receiverId: string; - actions: Array; - }>; -} - -export interface InjectedBitgetWallet { - isBitKeepChrome: boolean; - callbacks: Record; - getAccountId: () => string; - requestSignIn: ( - params: RequestSignInParams - ) => Promise; - signOut: () => Promise; - isSignedIn: () => boolean; - remove: (event: string) => void; - getPublicKey: () => Promise; - verifyOwner: ( - encoded: string, - accountId: string | null, - networkId: string - ) => Promise; - on: ( - event: Event, - callback: BitgetWalletEvents[Event] - ) => void; - signAndSendTransaction: ( - params: SignAndSendTransactionParams - ) => Promise; - requestSignTransactions: ( - params: requestSignTransactionsParams - ) => Promise; -} diff --git a/packages/bitget-wallet/tsconfig.json b/packages/bitget-wallet/tsconfig.json deleted file mode 100644 index 6532eb213..000000000 --- a/packages/bitget-wallet/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} \ No newline at end of file diff --git a/packages/bitget-wallet/tsconfig.lib.json b/packages/bitget-wallet/tsconfig.lib.json deleted file mode 100644 index 041a7bd44..000000000 --- a/packages/bitget-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} \ No newline at end of file diff --git a/packages/bitget-wallet/tsconfig.spec.json b/packages/bitget-wallet/tsconfig.spec.json deleted file mode 100644 index 88c8af823..000000000 --- a/packages/bitget-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} \ No newline at end of file diff --git a/packages/bitte-wallet/.babelrc b/packages/bitte-wallet/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/bitte-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/bitte-wallet/.eslintrc.json b/packages/bitte-wallet/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/bitte-wallet/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/bitte-wallet/README.md b/packages/bitte-wallet/README.md deleted file mode 100644 index 5e1d3d0a5..000000000 --- a/packages/bitte-wallet/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# @near-wallet-selector/bitte-wallet - -This is the [Bitte Wallet](https://wallet.bitte.ai) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` -```bash -# Using Yarn -yarn add @near-wallet-selector/bitte-wallet - -# Using NPM. -npm install @near-wallet-selector/bitte-wallet -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupBitteWallet } from "@near-wallet-selector/bitte-wallet"; - -const bitteWallet = setupBitteWallet({ - networkId: 'mainnet', - walletUrl: 'https://wallet.bitte.ai', - callbackUrl: 'https://www.mywebsite.com', - contractId: "yourcontract.near", //remove if you don't want limited access keys to be generated - deprecated: false, -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [bitteWallet], -}); -``` - -## Options - -- `networkId`: (`string?`): 'mainnet' or 'testnet' . Defaults to `mainnet`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. -- `callbackUrl`: (`string?`): Valid url to send your user after txn. -- `walletUrl`: (`string?`): wallet url: https://wallet.bitte.ai for mainnet and https://testnet.wallet.bitte.ai for testnet. -- `contractId`: (`string?`): the contract for which the generated limited access key will allow transactions, if you do not need a limited access key do not add this and it wont be created providing quicker onboarding - - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/bitte-wallet/jest.config.js b/packages/bitte-wallet/jest.config.js deleted file mode 100644 index 6aaf1aee1..000000000 --- a/packages/bitte-wallet/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "bitte-wallet", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/bitte-wallet", -}; diff --git a/packages/bitte-wallet/jest.config.ts b/packages/bitte-wallet/jest.config.ts deleted file mode 100644 index a319150f1..000000000 --- a/packages/bitte-wallet/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "bitte-wallet", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/bitte-wallet", -}; diff --git a/packages/bitte-wallet/package.json b/packages/bitte-wallet/package.json deleted file mode 100644 index 0a983cc2c..000000000 --- a/packages/bitte-wallet/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/bitte-wallet", - "version": "8.9.13", - "description": "Bitte wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "browser wallet", - "bitte wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/bitte-wallet" -} diff --git a/packages/bitte-wallet/project.json b/packages/bitte-wallet/project.json deleted file mode 100644 index 86b56daa8..000000000 --- a/packages/bitte-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "bitte-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/bitte-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/bitte-wallet", - "tsConfig": "packages/bitte-wallet/tsconfig.lib.json", - "project": "packages/bitte-wallet/package.json", - "entryFile": "packages/bitte-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/bitte-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/bitte-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/bitte-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/bitte-wallet"], - "options": { - "jestConfig": "packages/bitte-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["browser-wallet"] -} diff --git a/packages/bitte-wallet/src/index.ts b/packages/bitte-wallet/src/index.ts deleted file mode 100644 index f52b64d75..000000000 --- a/packages/bitte-wallet/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { setupBitteWallet } from "@mintbase-js/wallet"; - -export { setupBitteWallet }; diff --git a/packages/bitte-wallet/tsconfig.json b/packages/bitte-wallet/tsconfig.json deleted file mode 100644 index 6532eb213..000000000 --- a/packages/bitte-wallet/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} \ No newline at end of file diff --git a/packages/bitte-wallet/tsconfig.lib.json b/packages/bitte-wallet/tsconfig.lib.json deleted file mode 100644 index b3f90c22f..000000000 --- a/packages/bitte-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/bitte-wallet/tsconfig.spec.json b/packages/bitte-wallet/tsconfig.spec.json deleted file mode 100644 index 546f12877..000000000 --- a/packages/bitte-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} diff --git a/packages/coin98-wallet/.babelrc b/packages/coin98-wallet/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/coin98-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/coin98-wallet/.eslintrc.json b/packages/coin98-wallet/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/coin98-wallet/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/coin98-wallet/README.md b/packages/coin98-wallet/README.md deleted file mode 100644 index 0a9e18fe1..000000000 --- a/packages/coin98-wallet/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# @near-wallet-selector/coin98-wallet - -Coin98 Wallet [Coin98 Wallet](https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg) Package for NEAR Wallet Selector - -## Installation - -This package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` - -```bash -# Using Yarn -yarn add @near-wallet-selector/coin98-wallet - -# Using NPM. -npm install @near-wallet-selector/coin98-wallet -``` - -## Usage - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupCoin98Wallet } from "@near-wallet-selector/coin98-wallet"; - -// Coin98 Wallet for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const coin98Wallet = setupCoin98Wallet({ - iconUrl: "https://" // optional -}); - - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [coin98Wallet], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Icon is optional. Default image point to Coin98 Wallet Logo in base64 format. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupCoin98Wallet } from "@near-wallet-selector/coin98-wallet"; -import coin98WalletIconUrl from "@near-wallet-selector/coin98-wallet/assets/coin98-wallet-icon.png"; - -const wallet = setupCoin98Wallet({ - iconUrl: coin98WalletIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/coin98-wallet/assets/coin98-wallet-icon.png b/packages/coin98-wallet/assets/coin98-wallet-icon.png deleted file mode 100644 index c926f3fd4..000000000 Binary files a/packages/coin98-wallet/assets/coin98-wallet-icon.png and /dev/null differ diff --git a/packages/coin98-wallet/jest.config.ts b/packages/coin98-wallet/jest.config.ts deleted file mode 100644 index c5789497a..000000000 --- a/packages/coin98-wallet/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -module.exports = { - displayName: "coin98-wallet", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]sx?$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/coin98-wallet", -}; diff --git a/packages/coin98-wallet/package.json b/packages/coin98-wallet/package.json deleted file mode 100644 index 9ffde9e8c..000000000 --- a/packages/coin98-wallet/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/coin98-wallet", - "version": "8.9.13", - "description": "Coin 98 wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "coin 98" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/coin98-wallet" -} diff --git a/packages/coin98-wallet/project.json b/packages/coin98-wallet/project.json deleted file mode 100644 index 93b47c735..000000000 --- a/packages/coin98-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "coin98-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/coin98-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/coin98-wallet", - "tsConfig": "packages/coin98-wallet/tsconfig.lib.json", - "project": "packages/coin98-wallet/package.json", - "entryFile": "packages/coin98-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/coin98-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/coin98-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/coin98-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/coin98-wallet"], - "options": { - "jestConfig": "packages/coin98-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": [] -} diff --git a/packages/coin98-wallet/src/index.ts b/packages/coin98-wallet/src/index.ts deleted file mode 100644 index 539515a0a..000000000 --- a/packages/coin98-wallet/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./lib/coin98-wallet"; diff --git a/packages/coin98-wallet/src/lib/coin98-wallet.spec.ts b/packages/coin98-wallet/src/lib/coin98-wallet.spec.ts deleted file mode 100644 index c60fcf635..000000000 --- a/packages/coin98-wallet/src/lib/coin98-wallet.spec.ts +++ /dev/null @@ -1,132 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries */ -import { mock } from "jest-mock-extended"; -import { mockWallet } from "../../../core/src/lib/testUtils"; - -import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; -import type { InjectedWallet } from "../../../core/src/lib/wallet"; -import { setupCoin98Wallet } from "./coin98-wallet"; -import type { Signer } from "near-api-js/lib/signer"; - -const accountId = "amirsaran.testnet"; -const publicKey = "GF7tLvSzcxX4EtrMFtGvGTb2yUj2DhL8hWzc97BwUkyC"; - -const mockCoin98WalletOnWindow = () => { - window.coin98 = { - near: { - account: "", - signer: mock({ - createKey: jest.fn(), - signMessage: jest.fn().mockReturnValue({ - signature: Buffer.from([ - 86, 38, 222, 143, 115, 251, 107, 14, 115, 59, 92, 98, 66, 174, 173, - 124, 209, 189, 191, 180, 89, 25, 125, 254, 97, 240, 178, 98, 65, 70, - 238, 108, 105, 122, 165, 249, 193, 70, 118, 194, 126, 218, 117, 100, - 250, 124, 202, 161, 173, 12, 232, 146, 105, 194, 138, 35, 207, 53, - 84, 218, 45, 220, 10, 4, - ]), - publicKey, - }), - getPublicKey: jest.fn().mockReturnValue(publicKey), - }), - connect: jest.fn(async () => { - window.coin98.near.account = accountId; - return ""; - }), - disconnect: jest.fn(), - }, - }; - - return window.coin98; -}; - -const createCoin98Wallet = async (deps: MockWalletDependencies = {}) => { - const injectedCoin98Wallet = mockCoin98WalletOnWindow(); - const { wallet } = await mockWallet( - setupCoin98Wallet(), - deps - ); - - return { - wallet, - injectedCoin98Wallet, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("signIn", () => { - it("sign into coin98 wallet", async () => { - const { wallet, injectedCoin98Wallet } = await createCoin98Wallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - - expect(injectedCoin98Wallet.near.connect).toHaveBeenCalled(); - }); -}); - -describe("signOut", () => { - it("sign out of coin98 wallet", async () => { - const { wallet, injectedCoin98Wallet } = await createCoin98Wallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signOut(); - - expect(injectedCoin98Wallet.near.disconnect).toHaveBeenCalled(); - }); -}); - -describe("getAccounts", () => { - it("returns array of accounts", async () => { - const { wallet, injectedCoin98Wallet } = await createCoin98Wallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.getAccounts(); - - expect(injectedCoin98Wallet.near.signer.getPublicKey).toHaveBeenCalled(); - expect(result).toEqual([{ accountId, publicKey }]); - }); -}); - -describe("signAndSendTransaction", () => { - it("sign transaction in coin98", async () => { - const { wallet, injectedCoin98Wallet } = await createCoin98Wallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signAndSendTransaction({ - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }); - - expect(injectedCoin98Wallet.near.signer.signMessage).toHaveBeenCalled(); - }); -}); - -describe("signAndSendTransactions", () => { - it("sign transactions in coin98", async () => { - const { wallet, injectedCoin98Wallet } = await createCoin98Wallet(); - - const transactions = [ - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, - ]; - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.signAndSendTransactions({ - transactions, - }); - - expect(injectedCoin98Wallet.near.signer.signMessage).toHaveBeenCalled(); - expect(result.length).toEqual(transactions.length); - }); -}); diff --git a/packages/coin98-wallet/src/lib/coin98-wallet.ts b/packages/coin98-wallet/src/lib/coin98-wallet.ts deleted file mode 100644 index 5ce20c3a5..000000000 --- a/packages/coin98-wallet/src/lib/coin98-wallet.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { isMobile } from "is-mobile"; -import type { - WalletModuleFactory, - WalletBehaviourFactory, - InjectedWallet, - Account, - Optional, - Transaction, -} from "@near-wallet-selector/core"; -import { getActiveAccount } from "@near-wallet-selector/core"; -import type { InjectedCoin98 } from "./injected-coin98-wallet"; -import { signTransactions } from "@near-wallet-selector/wallet-utils"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; -import icon from "./icon"; - -declare global { - interface Window { - coin98: InjectedCoin98; - } -} - -export interface Coin98WalletParams { - iconUrl?: string; - deprecated?: boolean; -} - -interface Coin98WalletState { - wallet: InjectedCoin98; -} - -const isInstalled = () => { - return !!window.coin98; -}; - -const setupCoin98WalletState = (): Coin98WalletState => { - const wallet = window.coin98!; - - return { - wallet, - }; -}; - -const Coin98Wallet: WalletBehaviourFactory = async ({ - metadata, - options, - store, - provider, - logger, -}) => { - const _state = setupCoin98WalletState(); - - const getAccounts = async (): Promise> => { - const accountId = _state.wallet.near.account; - - if (!accountId) { - return []; - } - - const publicKey = await _state.wallet.near.signer.getPublicKey( - accountId, - options.network.networkId - ); - - return [ - { - accountId, - publicKey: publicKey ? publicKey.toString() : undefined, - }, - ]; - }; - - const transformTransactions = ( - transactions: Array> - ): Array => { - const { contract } = store.getState(); - - if (!contract) { - throw new Error("Wallet not signed in"); - } - - const account = getActiveAccount(store.getState()); - - if (!account) { - throw new Error("No active account"); - } - - return transactions.map((transaction) => { - return { - signerId: transaction.signerId || account.accountId, - receiverId: transaction.receiverId || contract.contractId, - actions: transaction.actions, - }; - }); - }; - - return { - async signIn({ contractId }) { - const existingAccounts = await getAccounts(); - - if (existingAccounts.length) { - return existingAccounts; - } - - await _state.wallet.near.connect({ prefix: "near_selector", contractId }); - return getAccounts(); - }, - - async signOut() { - // Ignore if unsuccessful (returns false). - await _state.wallet.near.disconnect(); - }, - - async getAccounts() { - return getAccounts(); - }, - - async verifyOwner() { - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - const signedTransactions = await signTransactions( - transformTransactions([{ signerId, receiverId, actions }]), - _state.wallet.near.signer, - options.network - ); - - return provider.sendTransaction(signedTransactions[0]); - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - const signedTransactions = await signTransactions( - transformTransactions(transactions), - _state.wallet.near.signer, - options.network - ); - - logger.log( - "signAndSendTransactions:signedTransactions", - signedTransactions - ); - - const results: Array = []; - - for (let i = 0; i < signedTransactions.length; i++) { - results.push(await provider.sendTransaction(signedTransactions[i])); - } - - return results; - }, - }; -}; - -export const setupCoin98Wallet = ({ - iconUrl = icon, - deprecated = false, -}: Coin98WalletParams = {}): WalletModuleFactory => { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - - const installed = isInstalled(); - - return { - id: "coin98-wallet", - type: "injected", - metadata: { - name: "Coin98 Wallet", - description: - "Using a Decentralized Wallet With Experiences of a Centralized One", - iconUrl, - downloadUrl: - "https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg", - deprecated, - available: installed, - }, - init: Coin98Wallet, - }; - }; -}; diff --git a/packages/coin98-wallet/src/lib/icon.ts b/packages/coin98-wallet/src/lib/icon.ts deleted file mode 100644 index 85f010175..000000000 --- a/packages/coin98-wallet/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/coin98-wallet/src/lib/injected-coin98-wallet.ts b/packages/coin98-wallet/src/lib/injected-coin98-wallet.ts deleted file mode 100644 index 72eff4f2e..000000000 --- a/packages/coin98-wallet/src/lib/injected-coin98-wallet.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { Signer } from "near-api-js/lib/signer"; - -interface IConnectParams { - prefix: string; - contractId: string; -} - -interface ICoin98Near { - account: string; - signer: Signer; - connect: (params: IConnectParams) => Promise; - disconnect: () => Promise; -} - -export interface InjectedCoin98 { - near: ICoin98Near; -} diff --git a/packages/coin98-wallet/tsconfig.json b/packages/coin98-wallet/tsconfig.json deleted file mode 100644 index 115cd6e64..000000000 --- a/packages/coin98-wallet/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - } -} \ No newline at end of file diff --git a/packages/coin98-wallet/tsconfig.lib.json b/packages/coin98-wallet/tsconfig.lib.json deleted file mode 100644 index a87bd6b78..000000000 --- a/packages/coin98-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["**/*.spec.ts", "jest.config.ts"] -} diff --git a/packages/coin98-wallet/tsconfig.spec.json b/packages/coin98-wallet/tsconfig.spec.json deleted file mode 100644 index a85d573fc..000000000 --- a/packages/coin98-wallet/tsconfig.spec.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": [ - "**/*.test.ts", - "**/*.spec.ts", - "**/*.test.tsx", - "**/*.spec.tsx", - "**/*.test.js", - "**/*.spec.js", - "**/*.test.jsx", - "**/*.spec.jsx", - "**/*.d.ts", - "jest.config.ts" - ] -} diff --git a/packages/core/dist/cjs/index.d.ts b/packages/core/dist/cjs/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/core/dist/cjs/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/index.d.ts.map b/packages/core/dist/cjs/index.d.ts.map new file mode 100644 index 000000000..a217c9fca --- /dev/null +++ b/packages/core/dist/cjs/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/core/dist/cjs/index.js b/packages/core/dist/cjs/index.js new file mode 100644 index 000000000..cfb828bf8 --- /dev/null +++ b/packages/core/dist/cjs/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = exports.allowOnlyLanguage = exports.translate = exports.serializeNep413 = exports.verifySignature = exports.verifyFullKeyBelongsToUser = exports.isCurrentBrowserSupported = exports.getActiveAccount = exports.waitFor = exports.EventEmitter = exports.setupWalletSelector = void 0; +var wallet_selector_js_1 = require("./lib/wallet-selector.js"); +Object.defineProperty(exports, "setupWalletSelector", { enumerable: true, get: function () { return wallet_selector_js_1.setupWalletSelector; } }); +var services_1 = require("./lib/services"); +Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return services_1.EventEmitter; } }); +var helpers_1 = require("./lib/helpers"); +Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return helpers_1.waitFor; } }); +Object.defineProperty(exports, "getActiveAccount", { enumerable: true, get: function () { return helpers_1.getActiveAccount; } }); +Object.defineProperty(exports, "isCurrentBrowserSupported", { enumerable: true, get: function () { return helpers_1.isCurrentBrowserSupported; } }); +Object.defineProperty(exports, "verifyFullKeyBelongsToUser", { enumerable: true, get: function () { return helpers_1.verifyFullKeyBelongsToUser; } }); +Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return helpers_1.verifySignature; } }); +Object.defineProperty(exports, "serializeNep413", { enumerable: true, get: function () { return helpers_1.serializeNep413; } }); +var translate_1 = require("./lib/translate/translate"); +Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } }); +Object.defineProperty(exports, "allowOnlyLanguage", { enumerable: true, get: function () { return translate_1.allowOnlyLanguage; } }); +var testUtils_1 = require("./lib/testUtils"); +Object.defineProperty(exports, "mockWallet", { enumerable: true, get: function () { return testUtils_1.mockWallet; } }); diff --git a/packages/core/dist/cjs/lib/constants.d.ts b/packages/core/dist/cjs/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/core/dist/cjs/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/constants.d.ts.map b/packages/core/dist/cjs/lib/constants.d.ts.map new file mode 100644 index 000000000..0cc3a67bf --- /dev/null +++ b/packages/core/dist/cjs/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/constants.js b/packages/core/dist/cjs/lib/constants.js new file mode 100644 index 000000000..50899a58d --- /dev/null +++ b/packages/core/dist/cjs/lib/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PENDING_SELECTED_WALLET_ID = exports.SELECTED_WALLET_ID = exports.PENDING_CONTRACT = exports.CONTRACT = exports.REMEMBER_RECENT_WALLETS_STATE = exports.REMEMBER_RECENT_WALLETS = exports.RECENTLY_SIGNED_IN_WALLETS = exports.PACKAGE_NAME = void 0; +exports.PACKAGE_NAME = "near-wallet-selector"; +exports.RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +exports.REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +exports.REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +exports.CONTRACT = "contract"; +exports.PENDING_CONTRACT = "contract:pending"; +exports.SELECTED_WALLET_ID = `selectedWalletId`; +exports.PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/core/dist/cjs/lib/helpers/detect-browser.d.ts b/packages/core/dist/cjs/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/detect-browser.d.ts.map b/packages/core/dist/cjs/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..64a7888f6 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/detect-browser.js b/packages/core/dist/cjs/lib/helpers/detect-browser.js new file mode 100644 index 000000000..a03402ab2 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/detect-browser.js @@ -0,0 +1,74 @@ +"use strict"; +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCurrentBrowserSupported = void 0; +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; +exports.isCurrentBrowserSupported = isCurrentBrowserSupported; diff --git a/packages/core/dist/cjs/lib/helpers/getActiveAccount.d.ts b/packages/core/dist/cjs/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/getActiveAccount.d.ts.map b/packages/core/dist/cjs/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..c218efb93 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/getActiveAccount.js b/packages/core/dist/cjs/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..0da744cc5 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/getActiveAccount.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActiveAccount = void 0; +const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; +exports.getActiveAccount = getActiveAccount; diff --git a/packages/core/dist/cjs/lib/helpers/index.d.ts b/packages/core/dist/cjs/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/index.d.ts.map b/packages/core/dist/cjs/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..189a41206 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/index.js b/packages/core/dist/cjs/lib/helpers/index.js new file mode 100644 index 000000000..eb80ab43a --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./waitFor"), exports); +__exportStar(require("./getActiveAccount"), exports); +__exportStar(require("./detect-browser"), exports); +__exportStar(require("./verify-signature/verify-signature"), exports); +__exportStar(require("./verify-signature/payload"), exports); diff --git a/packages/core/dist/cjs/lib/helpers/verify-signature/payload.d.ts b/packages/core/dist/cjs/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/verify-signature/payload.d.ts.map b/packages/core/dist/cjs/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..b1612c13c --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/verify-signature/payload.js b/packages/core/dist/cjs/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..5655fd8cd --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/verify-signature/payload.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeNep413 = exports.payloadSchema = exports.createPayload = void 0; +const borsh_1 = require("borsh"); +const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +exports.createPayload = createPayload; +exports.payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +const serializeNep413 = (signMessageParams) => { + const payload = (0, exports.createPayload)(signMessageParams); + return Buffer.from((0, borsh_1.serialize)(exports.payloadSchema, payload)); +}; +exports.serializeNep413 = serializeNep413; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.d.ts b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..2b595b947 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.js b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..5d00297d2 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyFullKeyBelongsToUser = exports.verifySignature = void 0; +const borsh_1 = require("borsh"); +const js_sha256_1 = require("js-sha256"); +const payload_1 = require("./payload"); +const crypto_1 = require("../../../../../../../near-api-js/packages/crypto"); +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +const providers_1 = require("@near-js/providers"); +const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = (0, borsh_1.serialize)(payload_1.payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(js_sha256_1.sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = (0, crypto_1.publicKeyFrom)(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +exports.verifySignature = verifySignature; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new providers_1.JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; +exports.verifyFullKeyBelongsToUser = verifyFullKeyBelongsToUser; diff --git a/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..3340696bb --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.types.js b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/helpers/waitFor.d.ts b/packages/core/dist/cjs/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/waitFor.d.ts.map b/packages/core/dist/cjs/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..338b9d94d --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/helpers/waitFor.js b/packages/core/dist/cjs/lib/helpers/waitFor.js new file mode 100644 index 000000000..8d37d4cef --- /dev/null +++ b/packages/core/dist/cjs/lib/helpers/waitFor.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitFor = void 0; +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; +exports.waitFor = waitFor; diff --git a/packages/core/dist/cjs/lib/locale/ar.json b/packages/core/dist/cjs/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/bg.json b/packages/core/dist/cjs/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/en.json b/packages/core/dist/cjs/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/es.json b/packages/core/dist/cjs/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/hi.json b/packages/core/dist/cjs/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/hr.json b/packages/core/dist/cjs/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/ko.json b/packages/core/dist/cjs/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/mk.json b/packages/core/dist/cjs/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/sl.json b/packages/core/dist/cjs/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/sr.json b/packages/core/dist/cjs/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/vi.json b/packages/core/dist/cjs/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/core/dist/cjs/lib/locale/zh.json b/packages/core/dist/cjs/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/core/dist/cjs/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/core/dist/cjs/lib/options.d.ts b/packages/core/dist/cjs/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/core/dist/cjs/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/options.d.ts.map b/packages/core/dist/cjs/lib/options.d.ts.map new file mode 100644 index 000000000..0dfccffa3 --- /dev/null +++ b/packages/core/dist/cjs/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/options.js b/packages/core/dist/cjs/lib/options.js new file mode 100644 index 000000000..587fab7eb --- /dev/null +++ b/packages/core/dist/cjs/lib/options.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveOptions = exports.resolveNetwork = exports.getNetworkPreset = void 0; +const services_1 = require("./services"); +const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +exports.getNetworkPreset = getNetworkPreset; +const resolveNetwork = (network) => { + return typeof network === "string" ? (0, exports.getNetworkPreset)(network) : network; +}; +exports.resolveNetwork = resolveNetwork; +const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: (0, exports.resolveNetwork)(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new services_1.WebStorageService(), + }; +}; +exports.resolveOptions = resolveOptions; diff --git a/packages/core/dist/cjs/lib/options.types.d.ts b/packages/core/dist/cjs/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/core/dist/cjs/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/options.types.d.ts.map b/packages/core/dist/cjs/lib/options.types.d.ts.map new file mode 100644 index 000000000..88cdbd12c --- /dev/null +++ b/packages/core/dist/cjs/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/options.types.js b/packages/core/dist/cjs/lib/options.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/options.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.service.d.ts b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..8680cc930 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.service.js b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..1129f4fc6 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventEmitter = void 0; +const events_1 = require("events"); +class EventEmitter { + emitter = new events_1.EventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} +exports.EventEmitter = EventEmitter; diff --git a/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.types.d.ts b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..7be1fb9b0 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.types.js b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/services/index.d.ts b/packages/core/dist/cjs/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/core/dist/cjs/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/index.d.ts.map b/packages/core/dist/cjs/lib/services/index.d.ts.map new file mode 100644 index 000000000..3c56938c1 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/index.js b/packages/core/dist/cjs/lib/services/index.js new file mode 100644 index 000000000..771f7ca4c --- /dev/null +++ b/packages/core/dist/cjs/lib/services/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./provider/provider.service"), exports); +__exportStar(require("./provider/provider.service.types"), exports); +__exportStar(require("./storage/storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service"), exports); +__exportStar(require("./storage/web-storage.service"), exports); +__exportStar(require("./logger/logger.service"), exports); +__exportStar(require("./logger/logger.service.types"), exports); +__exportStar(require("./wallet-modules/wallet-modules.service"), exports); +__exportStar(require("./event-emitter/event-emitter.service"), exports); +__exportStar(require("./event-emitter/event-emitter.types"), exports); diff --git a/packages/core/dist/cjs/lib/services/logger/logger.service.d.ts b/packages/core/dist/cjs/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/logger/logger.service.d.ts.map b/packages/core/dist/cjs/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..70ba2209e --- /dev/null +++ b/packages/core/dist/cjs/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/logger/logger.service.js b/packages/core/dist/cjs/lib/services/logger/logger.service.js new file mode 100644 index 000000000..f2365f6b4 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/logger/logger.service.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = exports.Logger = void 0; +class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +exports.Logger = Logger; +exports.logger = new Logger(); diff --git a/packages/core/dist/cjs/lib/services/logger/logger.service.types.d.ts b/packages/core/dist/cjs/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/logger/logger.service.types.d.ts.map b/packages/core/dist/cjs/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..bfd8be17b --- /dev/null +++ b/packages/core/dist/cjs/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/logger/logger.service.types.js b/packages/core/dist/cjs/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/logger/logger.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/services/provider/provider.service.d.ts b/packages/core/dist/cjs/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/provider/provider.service.d.ts.map b/packages/core/dist/cjs/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..990c68631 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/provider/provider.service.js b/packages/core/dist/cjs/lib/services/provider/provider.service.js new file mode 100644 index 000000000..7798a5f3f --- /dev/null +++ b/packages/core/dist/cjs/lib/services/provider/provider.service.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Provider = void 0; +const providers_1 = require("@near-js/providers"); +class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new providers_1.FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new providers_1.JsonRpcProvider({ url })) + : []; + } +} +exports.Provider = Provider; diff --git a/packages/core/dist/cjs/lib/services/provider/provider.service.mocks.d.ts b/packages/core/dist/cjs/lib/services/provider/provider.service.mocks.d.ts new file mode 100644 index 000000000..81f1c001c --- /dev/null +++ b/packages/core/dist/cjs/lib/services/provider/provider.service.mocks.d.ts @@ -0,0 +1,9 @@ +import type { QueryResponseKind } from "@near-js/types"; +export declare const createQueryResponseMock: () => QueryResponseKind; +export declare const createViewAccessKeyResponseMock: () => { + nonce: number; + permission: string; + block_height: import("@near-js/types").BlockHeight; + block_hash: import("@near-js/types").BlockHash; +}; +//# sourceMappingURL=provider.service.mocks.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/provider/provider.service.mocks.d.ts.map b/packages/core/dist/cjs/lib/services/provider/provider.service.mocks.d.ts.map new file mode 100644 index 000000000..02a8f749b --- /dev/null +++ b/packages/core/dist/cjs/lib/services/provider/provider.service.mocks.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.mocks.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/provider/provider.service.mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,eAAO,MAAM,uBAAuB,QAAO,iBAGzC,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;CAI1C,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/provider/provider.service.mocks.js b/packages/core/dist/cjs/lib/services/provider/provider.service.mocks.js new file mode 100644 index 000000000..2b3f842eb --- /dev/null +++ b/packages/core/dist/cjs/lib/services/provider/provider.service.mocks.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createViewAccessKeyResponseMock = exports.createQueryResponseMock = void 0; +const createQueryResponseMock = () => ({ + block_height: 0, + block_hash: "", +}); +exports.createQueryResponseMock = createQueryResponseMock; +const createViewAccessKeyResponseMock = () => ({ + ...(0, exports.createQueryResponseMock)(), + nonce: 0, + permission: "FullAccess", +}); +exports.createViewAccessKeyResponseMock = createViewAccessKeyResponseMock; diff --git a/packages/core/dist/cjs/lib/services/provider/provider.service.types.d.ts b/packages/core/dist/cjs/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/core/dist/cjs/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/provider/provider.service.types.d.ts.map b/packages/core/dist/cjs/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..ddb563251 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/provider/provider.service.types.js b/packages/core/dist/cjs/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/provider/provider.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/services/storage/json-storage.service.d.ts b/packages/core/dist/cjs/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/storage/json-storage.service.d.ts.map b/packages/core/dist/cjs/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..835b8b726 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/storage/json-storage.service.js b/packages/core/dist/cjs/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..1d1ed0bf1 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/json-storage.service.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonStorage = void 0; +const KEY_DELIMITER = ":"; +class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} +exports.JsonStorage = JsonStorage; diff --git a/packages/core/dist/cjs/lib/services/storage/json-storage.service.types.d.ts b/packages/core/dist/cjs/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/storage/json-storage.service.types.d.ts.map b/packages/core/dist/cjs/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..fc2008536 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/storage/json-storage.service.types.js b/packages/core/dist/cjs/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/json-storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/services/storage/storage.service.types.d.ts b/packages/core/dist/cjs/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/storage/storage.service.types.d.ts.map b/packages/core/dist/cjs/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..857ee8c42 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/storage/storage.service.types.js b/packages/core/dist/cjs/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/services/storage/web-storage.service.d.ts b/packages/core/dist/cjs/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/storage/web-storage.service.d.ts.map b/packages/core/dist/cjs/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..76a519042 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/storage/web-storage.service.js b/packages/core/dist/cjs/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..b1b3430c7 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/storage/web-storage.service.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebStorageService = void 0; +class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} +exports.WebStorageService = WebStorageService; diff --git a/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..12e1e5da2 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.js b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..a27acfb1e --- /dev/null +++ b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,325 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletModules = void 0; +const event_emitter_service_1 = require("../event-emitter/event-emitter.service"); +const logger_service_1 = require("../logger/logger.service"); +const constants_1 = require("../../constants"); +const json_storage_service_1 = require("../storage/json-storage.service"); +class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger_service_1.logger.log(`Failed to validate ${wallet.id} during setup`); + logger_service_1.logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(constants_1.PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(constants_1.PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(constants_1.PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(constants_1.PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger_service_1.logger.log("Failed to sign out existing wallet"); + logger_service_1.logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(constants_1.RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger_service_1.logger.log(`Failed to sign out ${wallet.id}`); + logger_service_1.logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(constants_1.PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(constants_1.PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new event_emitter_service_1.EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new logger_service_1.Logger(module.id), + storage: new json_storage_service_1.JsonStorage(this.storage, [constants_1.PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger_service_1.logger.log("Failed to setup module"); + logger_service_1.logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger_service_1.logger.error("Failed to sign in to wallet. " + err); + } + } + } +} +exports.WalletModules = WalletModules; diff --git a/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..8edf0f6ba --- /dev/null +++ b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/store.d.ts b/packages/core/dist/cjs/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/core/dist/cjs/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/store.d.ts.map b/packages/core/dist/cjs/lib/store.d.ts.map new file mode 100644 index 000000000..78d8a4223 --- /dev/null +++ b/packages/core/dist/cjs/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/store.js b/packages/core/dist/cjs/lib/store.js new file mode 100644 index 000000000..fc078e464 --- /dev/null +++ b/packages/core/dist/cjs/lib/store.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStore = void 0; +const rxjs_1 = require("rxjs"); +const services_1 = require("./services"); +const constants_1 = require("./constants"); +const reducer = (state, action) => { + services_1.logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? constants_1.REMEMBER_RECENT_WALLETS_STATE.DISABLED + : constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +const createStore = async (storage) => { + const jsonStorage = new services_1.JsonStorage(storage, constants_1.PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(constants_1.CONTRACT), + selectedWalletId: await jsonStorage.getItem(constants_1.SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new rxjs_1.BehaviorSubject(initialState); + const actions$ = new rxjs_1.Subject(); + actions$.pipe((0, rxjs_1.scan)(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, constants_1.SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, constants_1.CONTRACT, "contract"); + syncStorage(prevState, state, constants_1.RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, constants_1.REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; +exports.createStore = createStore; diff --git a/packages/core/dist/cjs/lib/store.types.d.ts b/packages/core/dist/cjs/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/core/dist/cjs/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/store.types.d.ts.map b/packages/core/dist/cjs/lib/store.types.d.ts.map new file mode 100644 index 000000000..4a2bdefd7 --- /dev/null +++ b/packages/core/dist/cjs/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/store.types.js b/packages/core/dist/cjs/lib/store.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/store.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/testUtils.d.ts b/packages/core/dist/cjs/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/core/dist/cjs/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/testUtils.d.ts.map b/packages/core/dist/cjs/lib/testUtils.d.ts.map new file mode 100644 index 000000000..a0b4fe3b3 --- /dev/null +++ b/packages/core/dist/cjs/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/testUtils.js b/packages/core/dist/cjs/lib/testUtils.js new file mode 100644 index 000000000..5e0cc0df9 --- /dev/null +++ b/packages/core/dist/cjs/lib/testUtils.js @@ -0,0 +1,107 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = void 0; +// Remove Jest import +// import * as jest from "jest"; +const jest_mock_extended_1 = require("jest-mock-extended"); +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +const mockWallet = async (factory, deps) => { + const { options, storage } = (0, options_1.resolveOptions)({ + network: (0, options_1.getNetworkPreset)("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const walletModules = new services_1.WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || (0, jest_mock_extended_1.mock)(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +exports.mockWallet = mockWallet; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/core/dist/cjs/lib/translate/translate.d.ts b/packages/core/dist/cjs/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/core/dist/cjs/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/translate/translate.d.ts.map b/packages/core/dist/cjs/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..53033f127 --- /dev/null +++ b/packages/core/dist/cjs/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/translate/translate.js b/packages/core/dist/cjs/lib/translate/translate.js new file mode 100644 index 000000000..c5573a87c --- /dev/null +++ b/packages/core/dist/cjs/lib/translate/translate.js @@ -0,0 +1,81 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.translate = exports.allowOnlyLanguage = void 0; +const en_json_1 = __importDefault(require("../locale/en.json")); +const es_json_1 = __importDefault(require("../locale/es.json")); +const zh_json_1 = __importDefault(require("../locale/zh.json")); +const bg_json_1 = __importDefault(require("../locale/bg.json")); +const ko_json_1 = __importDefault(require("../locale/ko.json")); +const vi_json_1 = __importDefault(require("../locale/vi.json")); +const hi_json_1 = __importDefault(require("../locale/hi.json")); +const ar_json_1 = __importDefault(require("../locale/ar.json")); +const hr_json_1 = __importDefault(require("../locale/hr.json")); +const mk_json_1 = __importDefault(require("../locale/mk.json")); +const sl_json_1 = __importDefault(require("../locale/sl.json")); +const sr_json_1 = __importDefault(require("../locale/sr.json")); +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en_json_1.default; + case "es": + return es_json_1.default; + case "zh": + return zh_json_1.default; + case "bg": + return bg_json_1.default; + case "ko": + return ko_json_1.default; + case "vi": + return vi_json_1.default; + case "hi": + return hi_json_1.default; + case "ar": + return ar_json_1.default; + case "hr": + return hr_json_1.default; + case "mk": + return mk_json_1.default; + case "sl": + return sl_json_1.default; + case "sr": + return sr_json_1.default; + default: + return en_json_1.default; + } +}; +let chosenLang; +const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +exports.allowOnlyLanguage = allowOnlyLanguage; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; +exports.translate = translate; diff --git a/packages/core/dist/cjs/lib/utils.types.d.ts b/packages/core/dist/cjs/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/core/dist/cjs/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/utils.types.d.ts.map b/packages/core/dist/cjs/lib/utils.types.d.ts.map new file mode 100644 index 000000000..c72f46560 --- /dev/null +++ b/packages/core/dist/cjs/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/utils.types.js b/packages/core/dist/cjs/lib/utils.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/utils.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/wallet-selector.d.ts b/packages/core/dist/cjs/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet-selector.d.ts.map b/packages/core/dist/cjs/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..c33db3e51 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet-selector.js b/packages/core/dist/cjs/lib/wallet-selector.js new file mode 100644 index 000000000..8ffb4cc07 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet-selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletSelector = void 0; +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +const setupWalletSelector = async (params) => { + const { options, storage } = (0, options_1.resolveOptions)(params); + services_1.Logger.debug = options.debug; + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const network = await (0, options_1.getNetworkPreset)(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new services_1.WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new services_1.Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; +exports.setupWalletSelector = setupWalletSelector; diff --git a/packages/core/dist/cjs/lib/wallet-selector.types.d.ts b/packages/core/dist/cjs/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet-selector.types.d.ts.map b/packages/core/dist/cjs/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..dc63fdc51 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet-selector.types.js b/packages/core/dist/cjs/lib/wallet-selector.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet-selector.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/wallet/index.d.ts b/packages/core/dist/cjs/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet/index.d.ts.map b/packages/core/dist/cjs/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..84da743c5 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet/index.js b/packages/core/dist/cjs/lib/wallet/index.js new file mode 100644 index 000000000..d7ee97f6b --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./wallet.types"), exports); +__exportStar(require("./transactions.types"), exports); diff --git a/packages/core/dist/cjs/lib/wallet/transactions.types.d.ts b/packages/core/dist/cjs/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet/transactions.types.d.ts.map b/packages/core/dist/cjs/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..22bf773d8 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet/transactions.types.js b/packages/core/dist/cjs/lib/wallet/transactions.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet/transactions.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/cjs/lib/wallet/wallet.types.d.ts b/packages/core/dist/cjs/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet/wallet.types.d.ts.map b/packages/core/dist/cjs/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c511239b8 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/cjs/lib/wallet/wallet.types.js b/packages/core/dist/cjs/lib/wallet/wallet.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/core/dist/cjs/lib/wallet/wallet.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/core/dist/esm/index.d.ts b/packages/core/dist/esm/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/core/dist/esm/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/index.d.ts.map b/packages/core/dist/esm/index.d.ts.map new file mode 100644 index 000000000..a217c9fca --- /dev/null +++ b/packages/core/dist/esm/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/core/dist/esm/index.js b/packages/core/dist/esm/index.js new file mode 100644 index 000000000..a545ffa59 --- /dev/null +++ b/packages/core/dist/esm/index.js @@ -0,0 +1,5 @@ +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export { EventEmitter } from "./lib/services"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; diff --git a/packages/core/dist/esm/lib/constants.d.ts b/packages/core/dist/esm/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/core/dist/esm/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/constants.d.ts.map b/packages/core/dist/esm/lib/constants.d.ts.map new file mode 100644 index 000000000..0cc3a67bf --- /dev/null +++ b/packages/core/dist/esm/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/constants.js b/packages/core/dist/esm/lib/constants.js new file mode 100644 index 000000000..a75f1a50e --- /dev/null +++ b/packages/core/dist/esm/lib/constants.js @@ -0,0 +1,11 @@ +export const PACKAGE_NAME = "near-wallet-selector"; +export const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export const REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +export const CONTRACT = "contract"; +export const PENDING_CONTRACT = "contract:pending"; +export const SELECTED_WALLET_ID = `selectedWalletId`; +export const PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/core/dist/esm/lib/helpers/detect-browser.d.ts b/packages/core/dist/esm/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/detect-browser.d.ts.map b/packages/core/dist/esm/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..64a7888f6 --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/detect-browser.js b/packages/core/dist/esm/lib/helpers/detect-browser.js new file mode 100644 index 000000000..c4e583914 --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/detect-browser.js @@ -0,0 +1,70 @@ +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +export const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; diff --git a/packages/core/dist/esm/lib/helpers/getActiveAccount.d.ts b/packages/core/dist/esm/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/getActiveAccount.d.ts.map b/packages/core/dist/esm/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..c218efb93 --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/getActiveAccount.js b/packages/core/dist/esm/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..b2db314cb --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/getActiveAccount.js @@ -0,0 +1,3 @@ +export const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; diff --git a/packages/core/dist/esm/lib/helpers/index.d.ts b/packages/core/dist/esm/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/index.d.ts.map b/packages/core/dist/esm/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..189a41206 --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/index.js b/packages/core/dist/esm/lib/helpers/index.js new file mode 100644 index 000000000..69aaf908c --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/index.js @@ -0,0 +1,5 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; diff --git a/packages/core/dist/esm/lib/helpers/verify-signature/payload.d.ts b/packages/core/dist/esm/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/verify-signature/payload.d.ts.map b/packages/core/dist/esm/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..b1612c13c --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/verify-signature/payload.js b/packages/core/dist/esm/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..f2a7f147e --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/verify-signature/payload.js @@ -0,0 +1,97 @@ +import { serialize } from "borsh"; +export const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +export const payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +export const serializeNep413 = (signMessageParams) => { + const payload = createPayload(signMessageParams); + return Buffer.from(serialize(payloadSchema, payload)); +}; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.d.ts b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..2b595b947 --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.js b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..f08e83f02 --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,39 @@ +import { serialize } from "borsh"; +import { sha256 } from "js-sha256"; +import { payloadSchema } from "./payload"; +import { publicKeyFrom } from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import { JsonRpcProvider } from "@near-js/providers"; +export const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = serialize(payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = publicKeyFrom(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +export const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; diff --git a/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..3340696bb --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.types.js b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/helpers/waitFor.d.ts b/packages/core/dist/esm/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/waitFor.d.ts.map b/packages/core/dist/esm/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..338b9d94d --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/helpers/waitFor.js b/packages/core/dist/esm/lib/helpers/waitFor.js new file mode 100644 index 000000000..55fc5398f --- /dev/null +++ b/packages/core/dist/esm/lib/helpers/waitFor.js @@ -0,0 +1,22 @@ +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +export const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; diff --git a/packages/core/dist/esm/lib/locale/ar.json b/packages/core/dist/esm/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/core/dist/esm/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/core/dist/esm/lib/locale/bg.json b/packages/core/dist/esm/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/core/dist/esm/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/core/dist/esm/lib/locale/en.json b/packages/core/dist/esm/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/core/dist/esm/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/core/dist/esm/lib/locale/es.json b/packages/core/dist/esm/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/core/dist/esm/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/core/dist/esm/lib/locale/hi.json b/packages/core/dist/esm/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/core/dist/esm/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/core/dist/esm/lib/locale/hr.json b/packages/core/dist/esm/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/core/dist/esm/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/core/dist/esm/lib/locale/ko.json b/packages/core/dist/esm/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/core/dist/esm/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/core/dist/esm/lib/locale/mk.json b/packages/core/dist/esm/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/core/dist/esm/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/core/dist/esm/lib/locale/sl.json b/packages/core/dist/esm/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/core/dist/esm/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/core/dist/esm/lib/locale/sr.json b/packages/core/dist/esm/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/core/dist/esm/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/core/dist/esm/lib/locale/vi.json b/packages/core/dist/esm/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/core/dist/esm/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/core/dist/esm/lib/locale/zh.json b/packages/core/dist/esm/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/core/dist/esm/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/core/dist/esm/lib/options.d.ts b/packages/core/dist/esm/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/core/dist/esm/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/options.d.ts.map b/packages/core/dist/esm/lib/options.d.ts.map new file mode 100644 index 000000000..0dfccffa3 --- /dev/null +++ b/packages/core/dist/esm/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/options.js b/packages/core/dist/esm/lib/options.js new file mode 100644 index 000000000..fa6b65f26 --- /dev/null +++ b/packages/core/dist/esm/lib/options.js @@ -0,0 +1,40 @@ +import { WebStorageService } from "./services"; +export const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +export const resolveNetwork = (network) => { + return typeof network === "string" ? getNetworkPreset(network) : network; +}; +export const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: resolveNetwork(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new WebStorageService(), + }; +}; diff --git a/packages/core/dist/esm/lib/options.types.d.ts b/packages/core/dist/esm/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/core/dist/esm/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/options.types.d.ts.map b/packages/core/dist/esm/lib/options.types.d.ts.map new file mode 100644 index 000000000..88cdbd12c --- /dev/null +++ b/packages/core/dist/esm/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/options.types.js b/packages/core/dist/esm/lib/options.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/options.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/services/event-emitter/event-emitter.service.d.ts b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..8680cc930 --- /dev/null +++ b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/event-emitter/event-emitter.service.js b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..304200d75 --- /dev/null +++ b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,16 @@ +import { EventEmitter as NEventEmitter } from "events"; +export class EventEmitter { + emitter = new NEventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} diff --git a/packages/core/dist/esm/lib/services/event-emitter/event-emitter.types.d.ts b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..7be1fb9b0 --- /dev/null +++ b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/event-emitter/event-emitter.types.js b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/services/index.d.ts b/packages/core/dist/esm/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/core/dist/esm/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/index.d.ts.map b/packages/core/dist/esm/lib/services/index.d.ts.map new file mode 100644 index 000000000..3c56938c1 --- /dev/null +++ b/packages/core/dist/esm/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/index.js b/packages/core/dist/esm/lib/services/index.js new file mode 100644 index 000000000..5301a0f98 --- /dev/null +++ b/packages/core/dist/esm/lib/services/index.js @@ -0,0 +1,11 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; diff --git a/packages/core/dist/esm/lib/services/logger/logger.service.d.ts b/packages/core/dist/esm/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/core/dist/esm/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/logger/logger.service.d.ts.map b/packages/core/dist/esm/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..70ba2209e --- /dev/null +++ b/packages/core/dist/esm/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/logger/logger.service.js b/packages/core/dist/esm/lib/services/logger/logger.service.js new file mode 100644 index 000000000..d1ca57bc4 --- /dev/null +++ b/packages/core/dist/esm/lib/services/logger/logger.service.js @@ -0,0 +1,32 @@ +export class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +export const logger = new Logger(); diff --git a/packages/core/dist/esm/lib/services/logger/logger.service.types.d.ts b/packages/core/dist/esm/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/core/dist/esm/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/logger/logger.service.types.d.ts.map b/packages/core/dist/esm/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..bfd8be17b --- /dev/null +++ b/packages/core/dist/esm/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/logger/logger.service.types.js b/packages/core/dist/esm/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/services/logger/logger.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/services/provider/provider.service.d.ts b/packages/core/dist/esm/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/core/dist/esm/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/provider/provider.service.d.ts.map b/packages/core/dist/esm/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..990c68631 --- /dev/null +++ b/packages/core/dist/esm/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/provider/provider.service.js b/packages/core/dist/esm/lib/services/provider/provider.service.js new file mode 100644 index 000000000..bfcf13b62 --- /dev/null +++ b/packages/core/dist/esm/lib/services/provider/provider.service.js @@ -0,0 +1,43 @@ +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +export class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new JsonRpcProvider({ url })) + : []; + } +} diff --git a/packages/core/dist/esm/lib/services/provider/provider.service.mocks.d.ts b/packages/core/dist/esm/lib/services/provider/provider.service.mocks.d.ts new file mode 100644 index 000000000..81f1c001c --- /dev/null +++ b/packages/core/dist/esm/lib/services/provider/provider.service.mocks.d.ts @@ -0,0 +1,9 @@ +import type { QueryResponseKind } from "@near-js/types"; +export declare const createQueryResponseMock: () => QueryResponseKind; +export declare const createViewAccessKeyResponseMock: () => { + nonce: number; + permission: string; + block_height: import("@near-js/types").BlockHeight; + block_hash: import("@near-js/types").BlockHash; +}; +//# sourceMappingURL=provider.service.mocks.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/provider/provider.service.mocks.d.ts.map b/packages/core/dist/esm/lib/services/provider/provider.service.mocks.d.ts.map new file mode 100644 index 000000000..02a8f749b --- /dev/null +++ b/packages/core/dist/esm/lib/services/provider/provider.service.mocks.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.mocks.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/provider/provider.service.mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,eAAO,MAAM,uBAAuB,QAAO,iBAGzC,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;CAI1C,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/provider/provider.service.mocks.js b/packages/core/dist/esm/lib/services/provider/provider.service.mocks.js new file mode 100644 index 000000000..822513b60 --- /dev/null +++ b/packages/core/dist/esm/lib/services/provider/provider.service.mocks.js @@ -0,0 +1,9 @@ +export const createQueryResponseMock = () => ({ + block_height: 0, + block_hash: "", +}); +export const createViewAccessKeyResponseMock = () => ({ + ...createQueryResponseMock(), + nonce: 0, + permission: "FullAccess", +}); diff --git a/packages/core/dist/esm/lib/services/provider/provider.service.types.d.ts b/packages/core/dist/esm/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/core/dist/esm/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/provider/provider.service.types.d.ts.map b/packages/core/dist/esm/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..ddb563251 --- /dev/null +++ b/packages/core/dist/esm/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/provider/provider.service.types.js b/packages/core/dist/esm/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/services/provider/provider.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/services/storage/json-storage.service.d.ts b/packages/core/dist/esm/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/storage/json-storage.service.d.ts.map b/packages/core/dist/esm/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..835b8b726 --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/storage/json-storage.service.js b/packages/core/dist/esm/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..a9175d614 --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/json-storage.service.js @@ -0,0 +1,25 @@ +const KEY_DELIMITER = ":"; +export class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} diff --git a/packages/core/dist/esm/lib/services/storage/json-storage.service.types.d.ts b/packages/core/dist/esm/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/storage/json-storage.service.types.d.ts.map b/packages/core/dist/esm/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..fc2008536 --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/storage/json-storage.service.types.js b/packages/core/dist/esm/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/json-storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/services/storage/storage.service.types.d.ts b/packages/core/dist/esm/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/storage/storage.service.types.d.ts.map b/packages/core/dist/esm/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..857ee8c42 --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/storage/storage.service.types.js b/packages/core/dist/esm/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/services/storage/web-storage.service.d.ts b/packages/core/dist/esm/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/storage/web-storage.service.d.ts.map b/packages/core/dist/esm/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..76a519042 --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/storage/web-storage.service.js b/packages/core/dist/esm/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..3b6ee32f5 --- /dev/null +++ b/packages/core/dist/esm/lib/services/storage/web-storage.service.js @@ -0,0 +1,20 @@ +export class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} diff --git a/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..12e1e5da2 --- /dev/null +++ b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.js b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..d5aa498d4 --- /dev/null +++ b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,321 @@ +import { EventEmitter } from "../event-emitter/event-emitter.service"; +import { Logger, logger } from "../logger/logger.service"; +import { RECENTLY_SIGNED_IN_WALLETS, PACKAGE_NAME, PENDING_CONTRACT, PENDING_SELECTED_WALLET_ID, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "../../constants"; +import { JsonStorage } from "../storage/json-storage.service"; +export class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger.log(`Failed to validate ${wallet.id} during setup`); + logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger.log("Failed to sign out existing wallet"); + logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger.log(`Failed to sign out ${wallet.id}`); + logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new Logger(module.id), + storage: new JsonStorage(this.storage, [PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger.log("Failed to setup module"); + logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger.error("Failed to sign in to wallet. " + err); + } + } + } +} diff --git a/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..8edf0f6ba --- /dev/null +++ b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/store.d.ts b/packages/core/dist/esm/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/core/dist/esm/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/store.d.ts.map b/packages/core/dist/esm/lib/store.d.ts.map new file mode 100644 index 000000000..78d8a4223 --- /dev/null +++ b/packages/core/dist/esm/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/store.js b/packages/core/dist/esm/lib/store.js new file mode 100644 index 000000000..32dc79078 --- /dev/null +++ b/packages/core/dist/esm/lib/store.js @@ -0,0 +1,154 @@ +import { Subject, BehaviorSubject, scan } from "rxjs"; +import { logger, JsonStorage } from "./services"; +import { PACKAGE_NAME, CONTRACT, SELECTED_WALLET_ID, RECENTLY_SIGNED_IN_WALLETS, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "./constants"; +const reducer = (state, action) => { + logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? REMEMBER_RECENT_WALLETS_STATE.DISABLED + : REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +export const createStore = async (storage) => { + const jsonStorage = new JsonStorage(storage, PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(CONTRACT), + selectedWalletId: await jsonStorage.getItem(SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new BehaviorSubject(initialState); + const actions$ = new Subject(); + actions$.pipe(scan(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, CONTRACT, "contract"); + syncStorage(prevState, state, RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; diff --git a/packages/core/dist/esm/lib/store.types.d.ts b/packages/core/dist/esm/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/core/dist/esm/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/store.types.d.ts.map b/packages/core/dist/esm/lib/store.types.d.ts.map new file mode 100644 index 000000000..4a2bdefd7 --- /dev/null +++ b/packages/core/dist/esm/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/store.types.js b/packages/core/dist/esm/lib/store.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/store.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/testUtils.d.ts b/packages/core/dist/esm/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/core/dist/esm/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/testUtils.d.ts.map b/packages/core/dist/esm/lib/testUtils.d.ts.map new file mode 100644 index 000000000..a0b4fe3b3 --- /dev/null +++ b/packages/core/dist/esm/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/testUtils.js b/packages/core/dist/esm/lib/testUtils.js new file mode 100644 index 000000000..7e90e1ce8 --- /dev/null +++ b/packages/core/dist/esm/lib/testUtils.js @@ -0,0 +1,103 @@ +// Remove Jest import +// import * as jest from "jest"; +import { mock } from "jest-mock-extended"; +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, WalletModules } from "./services"; +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +export const mockWallet = async (factory, deps) => { + const { options, storage } = resolveOptions({ + network: getNetworkPreset("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new EventEmitter(); + const store = await createStore(storage); + const walletModules = new WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || mock(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/core/dist/esm/lib/translate/translate.d.ts b/packages/core/dist/esm/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/core/dist/esm/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/translate/translate.d.ts.map b/packages/core/dist/esm/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..53033f127 --- /dev/null +++ b/packages/core/dist/esm/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/translate/translate.js b/packages/core/dist/esm/lib/translate/translate.js new file mode 100644 index 000000000..610c02a94 --- /dev/null +++ b/packages/core/dist/esm/lib/translate/translate.js @@ -0,0 +1,73 @@ +import en from "../locale/en.json"; +import es from "../locale/es.json"; +import zh from "../locale/zh.json"; +import bg from "../locale/bg.json"; +import ko from "../locale/ko.json"; +import vi from "../locale/vi.json"; +import hi from "../locale/hi.json"; +import ar from "../locale/ar.json"; +import hr from "../locale/hr.json"; +import mk from "../locale/mk.json"; +import sl from "../locale/sl.json"; +import sr from "../locale/sr.json"; +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en; + case "es": + return es; + case "zh": + return zh; + case "bg": + return bg; + case "ko": + return ko; + case "vi": + return vi; + case "hi": + return hi; + case "ar": + return ar; + case "hr": + return hr; + case "mk": + return mk; + case "sl": + return sl; + case "sr": + return sr; + default: + return en; + } +}; +let chosenLang; +export const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +export const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; diff --git a/packages/core/dist/esm/lib/utils.types.d.ts b/packages/core/dist/esm/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/core/dist/esm/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/utils.types.d.ts.map b/packages/core/dist/esm/lib/utils.types.d.ts.map new file mode 100644 index 000000000..c72f46560 --- /dev/null +++ b/packages/core/dist/esm/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/utils.types.js b/packages/core/dist/esm/lib/utils.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/utils.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/wallet-selector.d.ts b/packages/core/dist/esm/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/core/dist/esm/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet-selector.d.ts.map b/packages/core/dist/esm/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..c33db3e51 --- /dev/null +++ b/packages/core/dist/esm/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet-selector.js b/packages/core/dist/esm/lib/wallet-selector.js new file mode 100644 index 000000000..af67afbb6 --- /dev/null +++ b/packages/core/dist/esm/lib/wallet-selector.js @@ -0,0 +1,79 @@ +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, Logger, WalletModules, Provider } from "./services"; +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export const setupWalletSelector = async (params) => { + const { options, storage } = resolveOptions(params); + Logger.debug = options.debug; + const emitter = new EventEmitter(); + const store = await createStore(storage); + const network = await getNetworkPreset(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; diff --git a/packages/core/dist/esm/lib/wallet-selector.types.d.ts b/packages/core/dist/esm/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/core/dist/esm/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet-selector.types.d.ts.map b/packages/core/dist/esm/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..dc63fdc51 --- /dev/null +++ b/packages/core/dist/esm/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet-selector.types.js b/packages/core/dist/esm/lib/wallet-selector.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/wallet-selector.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/wallet/index.d.ts b/packages/core/dist/esm/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/core/dist/esm/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet/index.d.ts.map b/packages/core/dist/esm/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..84da743c5 --- /dev/null +++ b/packages/core/dist/esm/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet/index.js b/packages/core/dist/esm/lib/wallet/index.js new file mode 100644 index 000000000..bd35cba8b --- /dev/null +++ b/packages/core/dist/esm/lib/wallet/index.js @@ -0,0 +1,2 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; diff --git a/packages/core/dist/esm/lib/wallet/transactions.types.d.ts b/packages/core/dist/esm/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/core/dist/esm/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet/transactions.types.d.ts.map b/packages/core/dist/esm/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..22bf773d8 --- /dev/null +++ b/packages/core/dist/esm/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet/transactions.types.js b/packages/core/dist/esm/lib/wallet/transactions.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/wallet/transactions.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/dist/esm/lib/wallet/wallet.types.d.ts b/packages/core/dist/esm/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/core/dist/esm/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet/wallet.types.d.ts.map b/packages/core/dist/esm/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c511239b8 --- /dev/null +++ b/packages/core/dist/esm/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/esm/lib/wallet/wallet.types.js b/packages/core/dist/esm/lib/wallet/wallet.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/core/dist/esm/lib/wallet/wallet.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/jest.config.ts b/packages/core/jest.config.ts index b7a2c3210..872f8a298 100644 --- a/packages/core/jest.config.ts +++ b/packages/core/jest.config.ts @@ -8,7 +8,7 @@ export default { "^.+\\.[tj]sx?$": [ "ts-jest", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", }, ], }, diff --git a/packages/core/package.json b/packages/core/package.json index 62ddc3417..a2611c96e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -2,6 +2,44 @@ "name": "@near-wallet-selector/core", "version": "8.9.13", "description": "This is the core package for NEAR Wallet Selector.", + "scripts": { + "compile:esm": "tsc -p tsconfig.esm.json", + "compile:cjs": "tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/index.d.ts", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "type": "module", + "dependencies": { + "@near-js/crypto": "*", + "@near-js/providers": "*", + "borsh": "*", + "js-sha256": "*", + "near-api-js": "*", + "rxjs": "*" + }, + "devDependencies": { + "@near-js/transactions": "*", + "@near-js/types": "*", + "@types/jest": "*", + "@types/mocha": "*", + "@types/node": "*", + "jest": "*", + "jest-mock-extended": "*", + "rimraf": "*", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js" + } + }, "keywords": [ "near", "blockchain", @@ -18,9 +56,5 @@ "bugs": { "url": "https://github.com/near/wallet-selector/issues" }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/core", - "peerDependencies": { - "near-api-js": "4.0.3", - "@near-js/providers": "latest" - } + "homepage": "https://github.com/near/wallet-selector/tree/main/packages/core" } diff --git a/packages/core/project.json b/packages/core/project.json deleted file mode 100644 index ca0aea2c3..000000000 --- a/packages/core/project.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "core", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/core/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/core", - "tsConfig": "packages/core/tsconfig.lib.json", - "project": "packages/core/package.json", - "entryFile": "packages/core/src/index.ts", - "external": ["react/jsx-runtime"], - "rollupConfig": "@nx/react/plugins/bundle-rollup", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/core/README.md", - "input": ".", - "output": "." - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/core/**/*.{ts,tsx,js,jsx}"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/core"], - "options": { - "jestConfig": "packages/core/jest.config.ts", - "passWithNoTests": true - } - }, - "version": { - "executor": "@jscutlery/semver:version", - "options": { - "preset": "angular", - "commitMessageFormat": "chore(release): release version ${version}", - "syncVersions": true, - "skipProjectChangelog": true, - "skipRootChangelog": true, - "baseBranch": "main" - }, - "configurations": { - "dev": { - "releaseAs": "prerelease", - "preid": "dev", - "skipRootChangelog": true - } - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": [] -} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 5c827337b..1df8014ae 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -4,7 +4,7 @@ export type { WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; -export { setupWalletSelector } from "./lib/wallet-selector"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; export type { Network, NetworkId } from "./lib/options.types"; export type { @@ -72,7 +72,7 @@ export type { SignMessageParams, } from "./lib/wallet"; -export type { FinalExecutionOutcome } from "near-api-js/lib/providers"; +export type { FinalExecutionOutcome } from "@near-js/types"; export { waitFor, @@ -84,3 +84,5 @@ export { } from "./lib/helpers"; export { translate, allowOnlyLanguage } from "./lib/translate/translate"; + +export { mockWallet } from './lib/testUtils' diff --git a/packages/core/src/lib/helpers/verify-signature/payload.ts b/packages/core/src/lib/helpers/verify-signature/payload.ts index 9dffb78fe..08d7c0065 100644 --- a/packages/core/src/lib/helpers/verify-signature/payload.ts +++ b/packages/core/src/lib/helpers/verify-signature/payload.ts @@ -1,51 +1,114 @@ +import {Schema, serialize} from "borsh"; import type { SignMessageParams } from "../../wallet"; -import { serialize } from "borsh"; -export class Payload { - tag: number; +export interface Payload { message: string; nonce: Buffer; recipient: string; + tag?: number; callbackUrl?: string; +} + - constructor(data: SignMessageParams) { +export const createPayload = (data: SignMessageParams): Payload => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, // The tag's value is a hardcoded value as per // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) - this.tag = 2147484061; - this.message = data.message; - this.nonce = data.nonce; - this.recipient = data.recipient; - if (data.callbackUrl) { - this.callbackUrl = data.callbackUrl; - } - } -} + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; -export const payloadSchema = new Map([ - [ - Payload, - { - kind: "struct", - fields: [ - ["tag", "u32"], - ["message", "string"], - ["nonce", [32]], - ["recipient", "string"], - [ - "callbackUrl", - { - kind: "option", - type: "string", - }, - ], - ], +export const payloadSchema: Schema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" }, - ], -]); + } +}; + +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; -export const serializeNep413 = ( - signMessageParams: SignMessageParams -): Buffer => { - const payload = new Payload({ ...signMessageParams }); +export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { + const payload = createPayload(signMessageParams); return Buffer.from(serialize(payloadSchema, payload)); }; + +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; + + +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/core/src/lib/helpers/verify-signature/verify-signature.ts b/packages/core/src/lib/helpers/verify-signature/verify-signature.ts index 9487cc09e..bcedf1f4b 100644 --- a/packages/core/src/lib/helpers/verify-signature/verify-signature.ts +++ b/packages/core/src/lib/helpers/verify-signature/verify-signature.ts @@ -1,13 +1,15 @@ -import { utils, providers } from "near-api-js"; -import { serialize } from "borsh"; -import { sha256 } from "js-sha256"; +import {serialize} from "borsh"; +import {sha256} from "js-sha256"; import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams, ViewAccessKeyParams, } from "./verify-signature.types"; -import { Payload, payloadSchema } from "./payload"; -import type { AccessKeyView } from "near-api-js/lib/providers/provider"; +import {Payload, payloadSchema} from "./payload"; +import type { AccessKeyView } from "@near-js/types"; +import {KeyType, PublicKey, publicKeyFrom} from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import {JsonRpcProvider} from "@near-js/providers"; export const verifySignature = ({ publicKey, @@ -18,7 +20,7 @@ export const verifySignature = ({ callbackUrl, }: VerifySignatureParams) => { // Reconstruct the payload that was **actually signed** - const payload = new Payload({ message, nonce, recipient, callbackUrl }); + const payload: Payload = { message, nonce, recipient, callbackUrl }; // Serialize payload based on payloadSchema const borshPayload = serialize(payloadSchema, payload); @@ -30,7 +32,7 @@ export const verifySignature = ({ // Convert real signature to buffer base64 const realSignature = Buffer.from(signature, "base64"); - const pk = utils.PublicKey.from(publicKey); + const pk: PublicKey = publicKeyFrom(publicKey); // Verify the signature return pk.verify(hashedPayload, realSignature); @@ -41,7 +43,7 @@ const fetchAllUserKeys = async ({ network, publicKey, }: ViewAccessKeyParams): Promise => { - const provider = new providers.JsonRpcProvider({ url: network.nodeUrl }); + const provider = new JsonRpcProvider({ url: network.nodeUrl }); const key = await provider.query({ request_type: "view_access_key", account_id: accountId, diff --git a/packages/core/src/lib/helpers/verify-signature/verify-signature.types.ts b/packages/core/src/lib/helpers/verify-signature/verify-signature.types.ts index bb8ac26b9..b46d01a05 100644 --- a/packages/core/src/lib/helpers/verify-signature/verify-signature.types.ts +++ b/packages/core/src/lib/helpers/verify-signature/verify-signature.types.ts @@ -1,7 +1,13 @@ import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; + +export interface IPublicKey { + keyType: KeyType, + data: Uint8Array +} export interface VerifySignatureParams { - publicKey: string; + publicKey: IPublicKey; signature: string; message: string; nonce: Buffer; @@ -10,13 +16,13 @@ export interface VerifySignatureParams { } export interface VerifyFullKeyBelongsToUserParams { - publicKey: string; + publicKey: IPublicKey; accountId: string; network: Network; } export interface ViewAccessKeyParams { + publicKey: IPublicKey; accountId: string; network: Network; - publicKey: string; } diff --git a/packages/core/src/lib/services/provider/provider.service.mocks.ts b/packages/core/src/lib/services/provider/provider.service.mocks.ts index b35425128..0b532136a 100644 --- a/packages/core/src/lib/services/provider/provider.service.mocks.ts +++ b/packages/core/src/lib/services/provider/provider.service.mocks.ts @@ -1,4 +1,4 @@ -import type { QueryResponseKind } from "near-api-js/lib/providers/provider"; +import type { QueryResponseKind } from "@near-js/types"; export const createQueryResponseMock = (): QueryResponseKind => ({ block_height: 0, diff --git a/packages/core/src/lib/services/provider/provider.service.ts b/packages/core/src/lib/services/provider/provider.service.ts index 6cf257b6b..fb7e04719 100644 --- a/packages/core/src/lib/services/provider/provider.service.ts +++ b/packages/core/src/lib/services/provider/provider.service.ts @@ -1,23 +1,32 @@ -import * as nearAPI from "near-api-js"; import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest, -} from "near-api-js/lib/providers/provider"; +} from "@near-js/types"; import type { ProviderService, QueryParams, ViewAccessKeyParams, } from "./provider.service.types"; -import { JsonRpcProvider } from "near-api-js/lib/providers"; -import type { SignedTransaction } from "near-api-js/lib/transaction"; +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +import type { SignedTransaction } from "@near-js/transactions"; export class Provider implements ProviderService { - private provider: nearAPI.providers.FailoverRpcProvider; + /* + private provider: JsonRpcProvider; constructor(urls: Array) { - this.provider = new nearAPI.providers.FailoverRpcProvider( + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + + private provider: FailoverRpcProvider; + + constructor(urls: Array) { + this.provider = new FailoverRpcProvider( this.urlsToProviders(urls) ); } diff --git a/packages/core/src/lib/services/provider/provider.service.types.ts b/packages/core/src/lib/services/provider/provider.service.types.ts index ecc041d93..6d6393b7b 100644 --- a/packages/core/src/lib/services/provider/provider.service.types.ts +++ b/packages/core/src/lib/services/provider/provider.service.types.ts @@ -4,8 +4,8 @@ import type { BlockResult, QueryResponseKind, FinalExecutionOutcome, -} from "near-api-js/lib/providers/provider"; -import type { SignedTransaction } from "near-api-js/lib/transaction"; +} from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; export type QueryParams = { [key in string]: unknown }; diff --git a/packages/core/src/lib/testUtils.ts b/packages/core/src/lib/testUtils.ts index 52fc71a0d..470446506 100644 --- a/packages/core/src/lib/testUtils.ts +++ b/packages/core/src/lib/testUtils.ts @@ -1,3 +1,5 @@ +// Remove Jest import +// import * as jest from "jest"; import { mock } from "jest-mock-extended"; import type { WalletModuleFactory, Wallet } from "./wallet"; import type { ProviderService, StorageService } from "./services"; @@ -11,13 +13,13 @@ const createStorageMock = (): StorageService => { const _state: Record = {}; return { - getItem: jest.fn(async (key) => _state[key] || null), - setItem: jest.fn(async (key, value) => { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { _state[key] = value; - }), - removeItem: jest.fn(async (key) => { + }, + removeItem: async (key) => { delete _state[key]; - }), + }, }; }; @@ -57,3 +59,63 @@ export const mockWallet = async ( storage, }; }; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/core/src/lib/wallet/wallet.types.ts b/packages/core/src/lib/wallet/wallet.types.ts index 9ef2c7cae..b0f07a1f6 100644 --- a/packages/core/src/lib/wallet/wallet.types.ts +++ b/packages/core/src/lib/wallet/wallet.types.ts @@ -1,4 +1,3 @@ -import type { providers, utils } from "near-api-js"; import type { EventEmitterService, LoggerService, @@ -9,7 +8,8 @@ import type { Options } from "../options.types"; import type { ReadOnlyStore } from "../store.types"; import type { Transaction, Action } from "./transactions.types"; import type { Modify, Optional } from "../utils.types"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; interface BaseWalletMetadata { /** @@ -77,7 +77,7 @@ export interface VerifiedOwner { blockId: string; publicKey: string; signature: string; - keyType: utils.key_pair.KeyType; + keyType: KeyType; } export interface SignMessageParams { @@ -146,14 +146,14 @@ interface BaseWalletBehaviour { */ signAndSendTransaction( params: SignAndSendTransactionParams - ): Promise; + ): Promise; /** * Signs one or more transactions before sending to the network. * The user must be signed in to call this method as there's at least charges for gas spent. */ signAndSendTransactions( params: SignAndSendTransactionsParams - ): Promise>; + ): Promise>; signMessage?(params: SignMessageParams): Promise; } diff --git a/packages/core/src/lib/services/event-emitter/event-emitter.service.spec.ts b/packages/core/test/event-emitter.service.spec.ts similarity index 94% rename from packages/core/src/lib/services/event-emitter/event-emitter.service.spec.ts rename to packages/core/test/event-emitter.service.spec.ts index 45d26822e..e38fff629 100644 --- a/packages/core/src/lib/services/event-emitter/event-emitter.service.spec.ts +++ b/packages/core/test/event-emitter.service.spec.ts @@ -1,4 +1,4 @@ -import { EventEmitter } from "./event-emitter.service"; +import { EventEmitter } from "../src/lib/services/event-emitter/event-emitter.service"; describe("emit", () => { it("calls the subscribed handlers for the event", () => { diff --git a/packages/core/src/lib/options.spec.ts b/packages/core/test/options.spec.ts similarity index 95% rename from packages/core/src/lib/options.spec.ts rename to packages/core/test/options.spec.ts index a347e3758..c33858caa 100644 --- a/packages/core/src/lib/options.spec.ts +++ b/packages/core/test/options.spec.ts @@ -1,5 +1,5 @@ -import { getNetworkPreset, resolveNetwork } from "./options"; -import type { NetworkId, Network } from "./options.types"; +import { getNetworkPreset, resolveNetwork } from "../src/lib/options"; +import type { NetworkId, Network } from "../src/lib/options.types"; describe("getNetworkPreset", () => { it("returns the correct config for 'mainnet' without fallbackRpcUrls", () => { diff --git a/packages/core/src/lib/services/provider/provider.service.spec.ts b/packages/core/test/provider.service.spec.ts similarity index 90% rename from packages/core/src/lib/services/provider/provider.service.spec.ts rename to packages/core/test/provider.service.spec.ts index ed66ba560..6476ae9a3 100644 --- a/packages/core/src/lib/services/provider/provider.service.spec.ts +++ b/packages/core/test/provider.service.spec.ts @@ -1,21 +1,21 @@ -import { Provider } from "./provider.service"; +import { Provider } from "../src/lib/services/provider/provider.service"; import type { QueryParams, ViewAccessKeyParams, -} from "./provider.service.types"; +} from "../src/lib/services/provider/provider.service.types"; import { mock } from "jest-mock-extended"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; -import type { JsonRpcProvider } from "near-api-js/lib/providers"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import type { JsonRpcProvider } from "@near-js/providers"; import * as nearAPI from "near-api-js"; import { createQueryResponseMock, createViewAccessKeyResponseMock, -} from "./provider.service.mocks"; -import type { SignedTransaction } from "near-api-js/lib/transaction"; +} from "../src/lib/services/provider/provider.service.mocks"; +import type { SignedTransaction } from "@near-js/transactions"; import type { BlockReference, BlockResult, -} from "near-api-js/lib/providers/provider"; +} from "@near-js/types"; const defaults = { url: "https://rpc.testnet.near.org", diff --git a/packages/core/src/lib/wallet-selector.spec.ts b/packages/core/test/wallet-selector.spec.ts similarity index 92% rename from packages/core/src/lib/wallet-selector.spec.ts rename to packages/core/test/wallet-selector.spec.ts index 4edca0c64..f816bb2e0 100644 --- a/packages/core/src/lib/wallet-selector.spec.ts +++ b/packages/core/test/wallet-selector.spec.ts @@ -1,10 +1,10 @@ -import { setupWalletSelector } from "./wallet-selector"; +import { setupWalletSelector } from "../src/lib/wallet-selector"; import { FailoverRpcProvider } from "@near-js/providers"; -import { getNetworkPreset } from "./options"; -import { JsonRpcProvider } from "near-api-js/lib/providers"; -import type { Network } from "./options.types"; -import type { Store } from "./store.types"; -import type { WalletModuleFactory } from "./wallet"; +import { getNetworkPreset } from "../src/lib/options"; +import { JsonRpcProvider } from "@near-js/providers"; +import type { Network } from "../src/lib/options.types"; +import type { Store } from "../src/lib/store.types"; +import type { WalletModuleFactory } from "../src/lib/wallet"; // Mock implementations for required modules const _state: Record = {}; @@ -28,7 +28,7 @@ global.localStorage = { key: jest.fn((index) => Object.keys(_state)[index] || null), }; -jest.mock("./options", () => { +jest.mock("../src/lib/options", () => { return { ...jest.requireActual("./options"), getNetworkPreset: jest.fn().mockResolvedValue({ @@ -41,7 +41,7 @@ jest.mock("./options", () => { }; }); -jest.mock("./store", () => { +jest.mock("../src/lib/store", () => { return { ...jest.requireActual("./store"), createStore: jest.fn().mockResolvedValue({ diff --git a/packages/core/tsconfig.cjs.json b/packages/core/tsconfig.cjs.json new file mode 100644 index 000000000..9e5b4e43f --- /dev/null +++ b/packages/core/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/core/tsconfig.esm.json b/packages/core/tsconfig.esm.json new file mode 100644 index 000000000..633145642 --- /dev/null +++ b/packages/core/tsconfig.esm.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 9b688bfe7..b7c371405 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,33 +1,15 @@ { "extends": "../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "jsx": "preserve", - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "types": [ - "node", - "jest" - ], - "noEmit": true, - "resolveJsonModule": true, - "isolatedModules": true, - "incremental": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true - } + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "jsx": "react-jsx", + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*"] + } + }, + "include": ["src/**/*"] } diff --git a/packages/core/tsconfig.lib.json b/packages/core/tsconfig.lib.json deleted file mode 100644 index b3f90c22f..000000000 --- a/packages/core/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/core/tsconfig.spec.json b/packages/core/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/core/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/index.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/index.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/index.js b/packages/ethereum-wallets/dist/cjs/core/src/index.js new file mode 100644 index 000000000..cfb828bf8 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = exports.allowOnlyLanguage = exports.translate = exports.serializeNep413 = exports.verifySignature = exports.verifyFullKeyBelongsToUser = exports.isCurrentBrowserSupported = exports.getActiveAccount = exports.waitFor = exports.EventEmitter = exports.setupWalletSelector = void 0; +var wallet_selector_js_1 = require("./lib/wallet-selector.js"); +Object.defineProperty(exports, "setupWalletSelector", { enumerable: true, get: function () { return wallet_selector_js_1.setupWalletSelector; } }); +var services_1 = require("./lib/services"); +Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return services_1.EventEmitter; } }); +var helpers_1 = require("./lib/helpers"); +Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return helpers_1.waitFor; } }); +Object.defineProperty(exports, "getActiveAccount", { enumerable: true, get: function () { return helpers_1.getActiveAccount; } }); +Object.defineProperty(exports, "isCurrentBrowserSupported", { enumerable: true, get: function () { return helpers_1.isCurrentBrowserSupported; } }); +Object.defineProperty(exports, "verifyFullKeyBelongsToUser", { enumerable: true, get: function () { return helpers_1.verifyFullKeyBelongsToUser; } }); +Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return helpers_1.verifySignature; } }); +Object.defineProperty(exports, "serializeNep413", { enumerable: true, get: function () { return helpers_1.serializeNep413; } }); +var translate_1 = require("./lib/translate/translate"); +Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } }); +Object.defineProperty(exports, "allowOnlyLanguage", { enumerable: true, get: function () { return translate_1.allowOnlyLanguage; } }); +var testUtils_1 = require("./lib/testUtils"); +Object.defineProperty(exports, "mockWallet", { enumerable: true, get: function () { return testUtils_1.mockWallet; } }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/constants.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/constants.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/constants.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/constants.js new file mode 100644 index 000000000..50899a58d --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PENDING_SELECTED_WALLET_ID = exports.SELECTED_WALLET_ID = exports.PENDING_CONTRACT = exports.CONTRACT = exports.REMEMBER_RECENT_WALLETS_STATE = exports.REMEMBER_RECENT_WALLETS = exports.RECENTLY_SIGNED_IN_WALLETS = exports.PACKAGE_NAME = void 0; +exports.PACKAGE_NAME = "near-wallet-selector"; +exports.RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +exports.REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +exports.REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +exports.CONTRACT = "contract"; +exports.PENDING_CONTRACT = "contract:pending"; +exports.SELECTED_WALLET_ID = `selectedWalletId`; +exports.PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/detect-browser.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/detect-browser.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..a03402ab2 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,74 @@ +"use strict"; +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCurrentBrowserSupported = void 0; +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; +exports.isCurrentBrowserSupported = isCurrentBrowserSupported; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/getActiveAccount.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..0da744cc5 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActiveAccount = void 0; +const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; +exports.getActiveAccount = getActiveAccount; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/index.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/index.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/index.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/index.js new file mode 100644 index 000000000..eb80ab43a --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./waitFor"), exports); +__exportStar(require("./getActiveAccount"), exports); +__exportStar(require("./detect-browser"), exports); +__exportStar(require("./verify-signature/verify-signature"), exports); +__exportStar(require("./verify-signature/payload"), exports); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/payload.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..5655fd8cd --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeNep413 = exports.payloadSchema = exports.createPayload = void 0; +const borsh_1 = require("borsh"); +const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +exports.createPayload = createPayload; +exports.payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +const serializeNep413 = (signMessageParams) => { + const payload = (0, exports.createPayload)(signMessageParams); + return Buffer.from((0, borsh_1.serialize)(exports.payloadSchema, payload)); +}; +exports.serializeNep413 = serializeNep413; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..5d00297d2 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyFullKeyBelongsToUser = exports.verifySignature = void 0; +const borsh_1 = require("borsh"); +const js_sha256_1 = require("js-sha256"); +const payload_1 = require("./payload"); +const crypto_1 = require("../../../../../../../near-api-js/packages/crypto"); +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +const providers_1 = require("@near-js/providers"); +const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = (0, borsh_1.serialize)(payload_1.payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(js_sha256_1.sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = (0, crypto_1.publicKeyFrom)(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +exports.verifySignature = verifySignature; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new providers_1.JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; +exports.verifyFullKeyBelongsToUser = verifyFullKeyBelongsToUser; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/waitFor.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/waitFor.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..8d37d4cef --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/helpers/waitFor.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitFor = void 0; +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; +exports.waitFor = waitFor; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/ar.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/bg.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/en.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/es.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/hi.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/hr.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/ko.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/mk.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/sl.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/sr.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/vi.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/zh.json b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/options.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/options.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/options.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.js new file mode 100644 index 000000000..587fab7eb --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveOptions = exports.resolveNetwork = exports.getNetworkPreset = void 0; +const services_1 = require("./services"); +const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +exports.getNetworkPreset = getNetworkPreset; +const resolveNetwork = (network) => { + return typeof network === "string" ? (0, exports.getNetworkPreset)(network) : network; +}; +exports.resolveNetwork = resolveNetwork; +const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: (0, exports.resolveNetwork)(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new services_1.WebStorageService(), + }; +}; +exports.resolveOptions = resolveOptions; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/options.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/options.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/options.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/options.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..1129f4fc6 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventEmitter = void 0; +const events_1 = require("events"); +class EventEmitter { + emitter = new events_1.EventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} +exports.EventEmitter = EventEmitter; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/index.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/index.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/index.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/index.js new file mode 100644 index 000000000..771f7ca4c --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./provider/provider.service"), exports); +__exportStar(require("./provider/provider.service.types"), exports); +__exportStar(require("./storage/storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service"), exports); +__exportStar(require("./storage/web-storage.service"), exports); +__exportStar(require("./logger/logger.service"), exports); +__exportStar(require("./logger/logger.service.types"), exports); +__exportStar(require("./wallet-modules/wallet-modules.service"), exports); +__exportStar(require("./event-emitter/event-emitter.service"), exports); +__exportStar(require("./event-emitter/event-emitter.types"), exports); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..f2365f6b4 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = exports.Logger = void 0; +class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +exports.Logger = Logger; +exports.logger = new Logger(); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..7798a5f3f --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Provider = void 0; +const providers_1 = require("@near-js/providers"); +class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new providers_1.FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new providers_1.JsonRpcProvider({ url })) + : []; + } +} +exports.Provider = Provider; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..1d1ed0bf1 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonStorage = void 0; +const KEY_DELIMITER = ":"; +class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} +exports.JsonStorage = JsonStorage; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/storage.service.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/web-storage.service.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..b1b3430c7 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebStorageService = void 0; +class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} +exports.WebStorageService = WebStorageService; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..a27acfb1e --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,325 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletModules = void 0; +const event_emitter_service_1 = require("../event-emitter/event-emitter.service"); +const logger_service_1 = require("../logger/logger.service"); +const constants_1 = require("../../constants"); +const json_storage_service_1 = require("../storage/json-storage.service"); +class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger_service_1.logger.log(`Failed to validate ${wallet.id} during setup`); + logger_service_1.logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(constants_1.PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(constants_1.PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(constants_1.PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(constants_1.PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger_service_1.logger.log("Failed to sign out existing wallet"); + logger_service_1.logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(constants_1.RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger_service_1.logger.log(`Failed to sign out ${wallet.id}`); + logger_service_1.logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(constants_1.PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(constants_1.PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new event_emitter_service_1.EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new logger_service_1.Logger(module.id), + storage: new json_storage_service_1.JsonStorage(this.storage, [constants_1.PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger_service_1.logger.log("Failed to setup module"); + logger_service_1.logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger_service_1.logger.error("Failed to sign in to wallet. " + err); + } + } + } +} +exports.WalletModules = WalletModules; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/store.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/store.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/store.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.js new file mode 100644 index 000000000..fc078e464 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStore = void 0; +const rxjs_1 = require("rxjs"); +const services_1 = require("./services"); +const constants_1 = require("./constants"); +const reducer = (state, action) => { + services_1.logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? constants_1.REMEMBER_RECENT_WALLETS_STATE.DISABLED + : constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +const createStore = async (storage) => { + const jsonStorage = new services_1.JsonStorage(storage, constants_1.PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(constants_1.CONTRACT), + selectedWalletId: await jsonStorage.getItem(constants_1.SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new rxjs_1.BehaviorSubject(initialState); + const actions$ = new rxjs_1.Subject(); + actions$.pipe((0, rxjs_1.scan)(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, constants_1.SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, constants_1.CONTRACT, "contract"); + syncStorage(prevState, state, constants_1.RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, constants_1.REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; +exports.createStore = createStore; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/store.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/store.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/store.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/store.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/testUtils.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/testUtils.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/testUtils.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/testUtils.js new file mode 100644 index 000000000..5e0cc0df9 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/testUtils.js @@ -0,0 +1,107 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = void 0; +// Remove Jest import +// import * as jest from "jest"; +const jest_mock_extended_1 = require("jest-mock-extended"); +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +const mockWallet = async (factory, deps) => { + const { options, storage } = (0, options_1.resolveOptions)({ + network: (0, options_1.getNetworkPreset)("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const walletModules = new services_1.WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || (0, jest_mock_extended_1.mock)(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +exports.mockWallet = mockWallet; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/translate/translate.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/translate/translate.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/translate/translate.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/translate/translate.js new file mode 100644 index 000000000..c5573a87c --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/translate/translate.js @@ -0,0 +1,81 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.translate = exports.allowOnlyLanguage = void 0; +const en_json_1 = __importDefault(require("../locale/en.json")); +const es_json_1 = __importDefault(require("../locale/es.json")); +const zh_json_1 = __importDefault(require("../locale/zh.json")); +const bg_json_1 = __importDefault(require("../locale/bg.json")); +const ko_json_1 = __importDefault(require("../locale/ko.json")); +const vi_json_1 = __importDefault(require("../locale/vi.json")); +const hi_json_1 = __importDefault(require("../locale/hi.json")); +const ar_json_1 = __importDefault(require("../locale/ar.json")); +const hr_json_1 = __importDefault(require("../locale/hr.json")); +const mk_json_1 = __importDefault(require("../locale/mk.json")); +const sl_json_1 = __importDefault(require("../locale/sl.json")); +const sr_json_1 = __importDefault(require("../locale/sr.json")); +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en_json_1.default; + case "es": + return es_json_1.default; + case "zh": + return zh_json_1.default; + case "bg": + return bg_json_1.default; + case "ko": + return ko_json_1.default; + case "vi": + return vi_json_1.default; + case "hi": + return hi_json_1.default; + case "ar": + return ar_json_1.default; + case "hr": + return hr_json_1.default; + case "mk": + return mk_json_1.default; + case "sl": + return sl_json_1.default; + case "sr": + return sr_json_1.default; + default: + return en_json_1.default; + } +}; +let chosenLang; +const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +exports.allowOnlyLanguage = allowOnlyLanguage; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; +exports.translate = translate; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/utils.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/utils.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/utils.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/utils.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/utils.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..8ffb4cc07 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletSelector = void 0; +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +const setupWalletSelector = async (params) => { + const { options, storage } = (0, options_1.resolveOptions)(params); + services_1.Logger.debug = options.debug; + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const network = await (0, options_1.getNetworkPreset)(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new services_1.WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new services_1.Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; +exports.setupWalletSelector = setupWalletSelector; diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet-selector.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/index.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/index.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/index.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/index.js new file mode 100644 index 000000000..d7ee97f6b --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./wallet.types"), exports); +__exportStar(require("./transactions.types"), exports); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/transactions.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/transactions.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/transactions.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/wallet.types.d.ts b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/wallet.types.js b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/core/src/lib/wallet/wallet.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/index.d.ts b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/index.d.ts new file mode 100644 index 000000000..5a5fb6a0d --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupEthereumWallets } from "./lib"; +export type { EthereumWalletsParams } from "./lib"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/index.d.ts.map b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/index.d.ts.map new file mode 100644 index 000000000..85a82afa8 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,YAAY,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/index.js b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/index.js new file mode 100644 index 000000000..788a071e5 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupEthereumWallets = void 0; +var lib_1 = require("./lib"); +Object.defineProperty(exports, "setupEthereumWallets", { enumerable: true, get: function () { return lib_1.setupEthereumWallets; } }); diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/icon.d.ts b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/icon.d.ts new file mode 100644 index 000000000..582a3212b --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/png;base64,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"; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/icon.d.ts.map b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/icon.d.ts.map new file mode 100644 index 000000000..97220b1c7 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAAgr8H"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/icon.js b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/icon.js new file mode 100644 index 000000000..eaa6fec08 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/icon.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = `data:image/png;base64,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`; diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/index.d.ts b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/index.d.ts new file mode 100644 index 000000000..277442130 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/index.d.ts @@ -0,0 +1,30 @@ +import { type WalletModuleFactory, type InjectedWallet } from "@near-wallet-selector/core"; +import { type Config } from "@wagmi/core"; +type WagmiCoreActionsType = typeof import("@wagmi/core"); +export interface EthereumWalletsParams { + wagmiConfig: Config; + web3Modal?: { + open: () => void; + close: () => void; + subscribeEvents: (f: (event: { + data: { + event: string; + }; + }) => void) => () => void; + getState: () => { + open: boolean; + selectedNetworkId?: number; + }; + }; + wagmiCore?: WagmiCoreActionsType; + chainId?: number; + alwaysOnboardDuringSignIn?: boolean; + iconUrl?: string; + devMode?: boolean; + devModeAccount?: string; + deprecated?: boolean; + nearNodeUrl?: string; +} +export declare function setupEthereumWallets(params: EthereumWalletsParams): WalletModuleFactory; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/index.d.ts.map b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/index.d.ts.map new file mode 100644 index 000000000..014cca081 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,mBAAmB,EAKxB,KAAK,cAAc,EAEpB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAKrB,KAAK,oBAAoB,GAAG,cAAc,aAAa,CAAC,CAAC;AAoBzD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,IAAI,CAAC;QACjB,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,eAAe,EAAE,CACf,CAAC,EAAE,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,KAAK,IAAI,KAC5C,MAAM,IAAI,CAAC;QAChB,QAAQ,EAAE,MAAM;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/D,CAAC;IACF,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA46BD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,qBAAqB,GAC5B,mBAAmB,CAAC,cAAc,CAAC,CA4BrC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/index.js b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/index.js new file mode 100644 index 000000000..4e63d1141 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/index.js @@ -0,0 +1,879 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupEthereumWallets = setupEthereumWallets; +const nearAPI = __importStar(require("near-api-js")); +const providers_1 = require("@near-js/providers"); +const transactions_1 = require("@near-js/transactions"); +const utils_1 = require("@near-js/utils"); +const wallet_utils_1 = require("@near-wallet-selector/wallet-utils"); +const viem_1 = require("viem"); +const bs58_1 = __importDefault(require("bs58")); +let wagmiCore = null; +const importWagmiCore = async () => { + // Commonjs support NA with @wagmi/core: + // https://wagmi.sh/core/guides/migrate-from-v1-to-v2#dropped-commonjs-support + return Promise.resolve().then(() => __importStar(require("@wagmi/core"))).then((module) => { + wagmiCore = module; + }); +}; +const icon_1 = __importDefault(require("./icon")); +const modal_1 = require("./modal"); +const utils_2 = require("./utils"); +const setupEthereumWalletsState = async (id) => { + const keystore = new nearAPI.keyStores.BrowserLocalStorageKeyStore(window.localStorage, `near-wallet-selector:${id}:keystore:`); + return { + keystore, + subscriptions: [], + isConnecting: false, + }; +}; +const EthereumWallets = async ({ id, options, store, provider, emitter, logger, params: { wagmiConfig, web3Modal, chainId, alwaysOnboardDuringSignIn = false, devMode, devModeAccount = "eth-wallet.testnet", nearNodeUrl, }, }) => { + if (!wagmiCore) { + throw new Error("@wagmi/core not imported."); + } + const _state = await setupEthereumWalletsState(id); + const expectedChainId = chainId ?? (options.network.networkId === "mainnet" ? 397 : 398); + const chain = wagmiConfig.chains.find((c) => c.id === expectedChainId); + if (!chain) { + throw new Error("Failed to parse NEAR chain from wagmiConfig."); + } + const nearRpc = chain.rpcUrls.default.http[0]; + if (!nearRpc) { + throw new Error("Failed to parse NEAR rpc url from wagmiConfig."); + } + const nearExplorer = chain.blockExplorers?.default.url; + if (!nearExplorer) { + throw new Error("Failed to parse NEAR explorer url from wagmiConfig."); + } + // NOTE: use a custom provider because the failover provider doesn't give error details. + const nearProvider = new providers_1.JsonRpcProvider(nearNodeUrl ?? + // @ts-expect-error + provider.provider.connection ?? + // @ts-expect-error + provider.provider.providers[ + // @ts-expect-error + provider.provider.currentProviderIndex].connection); + const getAccounts = async () => { + const address = wagmiCore.getAccount(wagmiConfig).address?.toLowerCase(); + const account = devMode ? address + "." + devModeAccount : address; + if (!account || !address) { + return []; + } + const keyPair = await _state.keystore.getKey(options.network.networkId, account); + const accountLogIn = { + accountId: account, + publicKey: keyPair ? keyPair.getPublicKey().toString() : undefined, + }; + return [accountLogIn]; + }; + const cleanup = async () => { + _state.subscriptions.forEach((subscription) => subscription.remove()); + _state.subscriptions = []; + }; + const executeTransaction = async ({ tx, relayerPublicKey, }) => { + const to = (/^0x([A-Fa-f0-9]{40})$/.test(tx.receiverId) + ? tx.receiverId + : "0x" + (0, viem_1.keccak256)((0, viem_1.toHex)(tx.receiverId)).slice(26)); + // Created this defaults variable during the process + // of getting wallet selector packages and near-js packages + // working smoothly on LTS node version. + // Feel free to update/remove/whatever + let ethTxDefaults = { + abi: [], + functionName: "", + address: `0x`, + chain: undefined, + account: `0x` + }; + let ethTx; + switch (tx.actions[0].type) { + case "CreateAccount": + break; + case "DeployContract": + break; + case "Stake": + break; + case "DeleteAccount": + break; + case "AddKey": { + const publicKey = (0, viem_1.bytesToHex)(bs58_1.default.decode(tx.actions[0].params.publicKey.split(":")[1])); + if (tx.actions[0].params.accessKey.permission === "FullAccess") { + const args = [ + 0, // 0 stands for ed25519 + publicKey, + BigInt(tx.actions[0].params.accessKey.nonce ?? 0), + true, + false, // Not used with is_full_access + BigInt(0), // Not used with is_full_access + "", // Not used with is_full_access + [], // Not used with is_full_access + ]; + ethTx = { + abi: utils_2.ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "addKey", + args, + chainId: expectedChainId, + type: "legacy", + }; + throw new Error("Requesting a FullAccess key is not allowed."); + } + else { + const allowance = BigInt(tx.actions[0].params.accessKey.permission.allowance ?? + utils_2.DEFAULT_ACCESS_KEY_ALLOWANCE); + const args = [ + 0, // 0 stands for ed25519 + publicKey, + BigInt(tx.actions[0].params.accessKey.nonce ?? 0), + false, + allowance > 0 ? true : false, + allowance, + tx.actions[0].params.accessKey.permission.receiverId, + tx.actions[0].params.accessKey.permission.methodNames ?? [], + ]; + ethTx = { + abi: utils_2.ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "addKey", + args, + gasPrice: tx.actions[0].params.publicKey === relayerPublicKey && + tx.receiverId === + tx.actions[0].params.accessKey.permission.receiverId + ? // Free onboarding tx: fix 1 wei gasPrice because some wallets ignore 0 gasPrice. + // Rpc will also return a dust eth_getBalance for accounts not yet onboarded to trick wallets + // into accepting this free transaction even before the user owns NEAR. + BigInt(1) + : undefined, + chainId: expectedChainId, + type: "legacy", + // uhhh + }; + } + break; + } + case "DeleteKey": { + const publicKey = (0, viem_1.bytesToHex)(bs58_1.default.decode(tx.actions[0].params.publicKey.split(":")[1])); + const args = [ + 0, // 0 stands for ed25519 + publicKey, + ]; + ethTx = { + abi: utils_2.ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "deleteKey", + args, + chainId: expectedChainId, + type: "legacy", + }; + break; + } + case "FunctionCall": { + const yoctoNear = BigInt(tx.actions[0].params.deposit) % BigInt(1e6); + const value = BigInt(tx.actions[0].params.deposit) / BigInt(1e6); + const requestedGas = BigInt(tx.actions[0].params.gas); + const nearGas = requestedGas <= utils_2.MAX_TGAS ? requestedGas : utils_2.MAX_TGAS; + const args = [ + tx.receiverId, + tx.actions[0].params.methodName, + (0, viem_1.bytesToHex)((0, transactions_1.stringifyJsonOrBytes)(tx.actions[0].params.args)), + nearGas, + +yoctoNear.toString(), + ]; + ethTx = { + abi: utils_2.ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "functionCall", + args, + value, + chainId: expectedChainId, + type: "legacy", + }; + break; + } + case "Transfer": { + const yoctoNear = BigInt(tx.actions[0].params.deposit) % BigInt(1e6); + const value = BigInt(tx.actions[0].params.deposit) / BigInt(1e6); + const args = [tx.receiverId, +yoctoNear.toString()]; + ethTx = { + abi: utils_2.ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "transfer", + args, + value, + chainId: expectedChainId, + type: "legacy", + }; + break; + } + default: { + throw new Error("Invalid action type"); + } + } + // NOTE: re-add simulateContract and parse errors after eth_call implements errors. + // const { request } = await wagmiCore!.simulateContract(wagmiConfig, ethTx); + const result = await wagmiCore.writeContract(wagmiConfig, ethTx); + return result; + }; + // Watch Ethereum wallet changes. + const setupEvents = async () => { + const unwatchAccount = wagmiCore.watchAccount(wagmiConfig, { + onChange: async (data) => { + // Ethereum wallet disconnected: also disconnect NEAR account. + if (!data.address && data.status === "disconnected") { + emitter.emit("signedOut", null); + return; + } + // Ethereum wallet switched connected account: also switch NEAR account if already signed in or disconnect. + if (data.address && data.status === "connected") { + if (store.getState().contract?.contractId) { + const address = data.address.toLowerCase(); + const keyPair = await _state.keystore.getKey(options.network.networkId, devMode ? address + "." + devModeAccount : address); + if (!keyPair) { + try { + wagmiCore.disconnect(wagmiConfig); + } + catch (error) { + logger.error(error); + } + emitter.emit("signedOut", null); + return; + } + } + emitter.emit("accountsChanged", { accounts: await getAccounts() }); + } + }, + }); + _state.subscriptions.push({ remove: () => unwatchAccount() }); + }; + setupEvents(); + // Add signerId and receiverId defaults. + const transformTransactions = async (transactions) => { + const state = store.getState(); + const { contract } = state; + const [accountLogIn] = await getAccounts(); + if (!accountLogIn) { + throw new Error("No active account"); + } + return transactions.map((transaction) => { + if (!contract && !transaction.receiverId) { + throw new Error(`Missing receiverId, got '${transaction.receiverId}'`); + } + return { + ...transaction, + signerId: transaction.signerId || accountLogIn.accountId, + receiverId: transaction.receiverId || contract.contractId, + }; + }); + }; + // Separate actions into individual transactions because not available in 0x accounts. + const transformEthereumTransactions = (transactions) => { + return transactions + .map((transaction) => { + return transaction.actions.map((action) => { + return { + signerId: transaction.signerId, + receiverId: transaction.receiverId, + actions: [action], + }; + }); + }) + .flat(); + }; + // Check if accessKey is usable to execute all transaction. + const validateAccessKey = ({ transactions, accessKey, }) => { + if (accessKey.permission === "FullAccess") { + return true; + } + return transactions.every((tx) => { + // eslint-disable-next-line @typescript-eslint/naming-convention + const { receiver_id, method_names } = accessKey.permission.FunctionCall; + if (receiver_id !== tx.receiverId) { + return false; + } + return tx.actions.every((action) => { + if (action.type !== "FunctionCall") { + return false; + } + const { methodName, deposit } = action.params; + if (method_names.length && !method_names.includes(methodName)) { + return false; + } + return BigInt(deposit) <= 0; + }); + }); + }; + // Get the relayer public key and onboarding transaction if needed. + const getRelayerOnboardingInfo = async ({ accountId, }) => { + let relayerPublicKey; + try { + const response = await fetch(nearRpc, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + jsonrpc: "2.0", + id: 3, + method: "near_getPublicKey", + }), + }); + const { result } = await response.json(); + relayerPublicKey = + "ed25519:" + bs58_1.default.encode(Buffer.from(result.public_key, "hex")); + } + catch (error) { + logger.error(error); + throw new Error("Failed to fetch the relayer's public key."); + } + try { + const key = await nearProvider.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: relayerPublicKey, + }); + logger.log("User account ready, relayer access key onboarded.", relayerPublicKey, key); + return { relayerPublicKey, onboardingTransaction: null }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } + catch (error) { + logger.error(error); + if (!error.message?.includes("does not exist while viewing") && + !error.message?.includes("doesn't exist") && + !error.message?.includes("does not exist") && + !error.message?.includes("has never been observed on the node")) { + throw new Error("Failed to view the relayer public key (view_access_key)."); + } + logger.warn("Need to add the relayer access key:", relayerPublicKey); + // Add the relayer's access key on-chain. + return { + relayerPublicKey, + onboardingTransaction: { + signerId: accountId, + receiverId: accountId, + actions: [ + { + type: "AddKey", + params: { + publicKey: relayerPublicKey, + accessKey: { + nonce: 0, + permission: { + receiverId: accountId, + allowance: "0", + methodNames: [utils_2.RLP_EXECUTE], + }, + }, + }, + }, + ], + }, + }; + } + }; + const switchChain = async () => { + const account = wagmiCore.getAccount(wagmiConfig); + if (account.chainId !== expectedChainId) { + const { showModal, hideModal } = (0, modal_1.createChainSwitchModal)({ + chain, + }); + showModal(); + try { + await wagmiCore.switchChain(wagmiConfig, { + chainId: expectedChainId, + }); + } + catch (error) { + logger.error(error); + // TODO: add the link to onboarding page when available. + throw new Error("Wallet didn't connect to NEAR Protocol network, try adding and selecting the network manually inside wallet settings."); + // NOTE: we don't hide the modal in case of error to allow the user to add the network manually. + } + hideModal(); + } + }; + const signAndSendTransactions = async (transactions) => { + const nearTxs = await transformTransactions(transactions); + const [accountLogIn] = await getAccounts(); + // If transactions can be executed with FunctionCall access key do it, otherwise execute 1 by 1 with Ethereum wallet. + if (accountLogIn.publicKey && nearTxs.length) { + let accessKeyUsable; + try { + const accessKey = await nearProvider.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountLogIn.accountId, + public_key: accountLogIn.publicKey, + }); + accessKeyUsable = validateAccessKey({ + transactions: nearTxs, + accessKey, + }); + } + catch (error) { + logger.error(error); + accessKeyUsable = false; + } + if (accessKeyUsable) { + const signer = new nearAPI.InMemorySigner(_state.keystore); + const signedTransactions = await (0, wallet_utils_1.signTransactions)(nearTxs, signer, options.network); + const results = []; + for (let i = 0; i < signedTransactions.length; i += 1) { + const nearTx = await nearProvider.sendTransaction(signedTransactions[i]); + logger.log("NEAR transaction:", nearTx); + if (typeof nearTx.status === "object" && + typeof nearTx.status.Failure === "object" && + nearTx.status.Failure !== null) { + logger.error("Transaction execution error."); + throw (0, utils_1.parseRpcError)(nearTx.status.Failure); + } + results.push(nearTx); + } + return results; + } + } + const { relayerPublicKey, onboardingTransaction } = await getRelayerOnboardingInfo({ + accountId: accountLogIn.accountId, + }); + let txs = transformEthereumTransactions(nearTxs); + if (onboardingTransaction) { + // Onboard the relayer before executing other transactions. + txs = [onboardingTransaction, ...txs]; + } + await switchChain(); + const results = []; + await (() => { + return new Promise((resolve, reject) => { + const { showModal, hideModal, renderTxs } = (0, modal_1.createTxModal)({ + onCancel: () => { + reject("User canceled Ethereum wallet transaction(s)."); + }, + txs, + relayerPublicKey, + explorerUrl: nearExplorer, + }); + showModal(); + (async () => { + try { + const ethTxHashes = []; + for (const [index, tx] of txs.entries()) { + let txHash; + let txError = null; + while (!txHash) { + try { + await (() => { + return new Promise((resolveTx, rejectTx) => { + renderTxs({ + selectedIndex: index, + ethTxHashes, + error: txError, + onConfirm: async () => { + try { + txError = null; + renderTxs({ + selectedIndex: index, + ethTxHashes, + error: txError, + }); + txHash = await executeTransaction({ + tx, + relayerPublicKey, + }); + resolveTx(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } + catch (err) { + logger.error(err); + if (!err.message?.includes("reject") && + !err.message?.includes("denied")) { + txError = "Transaction execution error."; + } + rejectTx(new utils_2.EthTxError("Transaction request error.")); + } + }, + }); + }); + })(); + } + catch (error) { + logger.error(error); + if (!(error instanceof utils_2.EthTxError)) { + throw new Error("Ethereum modal render error."); + } + } + } + logger.log(`Sent transaction: ${txHash}`); + ethTxHashes.push(txHash); + renderTxs({ + selectedIndex: index, + ethTxHashes, + }); + await new Promise((r) => setTimeout(r, 2000)); + let receipt; + try { + // NOTE: error is thrown if tx failed so we catch it to get the receipt. + receipt = await wagmiCore.waitForTransactionReceipt(wagmiConfig, { + hash: txHash, + chainId: expectedChainId, + }); + } + catch (error) { + logger.error(error); + while (!receipt) { + try { + await new Promise((r) => setTimeout(r, 1000)); + receipt = await wagmiCore.getTransactionReceipt(wagmiConfig, { + hash: txHash, + chainId: expectedChainId, + }); + } + catch (err) { + logger.log(err); + } + } + } + logger.log("Receipt:", receipt); + let nearTx; + while (!nearTx) { + try { + await new Promise((r) => setTimeout(r, 1000)); + nearTx = await nearProvider.txStatus( + /* // @ts-expect-error */ + receipt.nearTransactionHash, accountLogIn.accountId); + } + catch (err) { + logger.log(err); + } + } + logger.log("NEAR transaction:", nearTx); + if (receipt.status !== "success") { + const failedOutcome = nearTx.receipts_outcome.find(({ outcome }) => typeof outcome.status === "object" && + typeof outcome.status.Failure === "object" && + outcome.status.Failure !== null && + outcome.executor_id === tx.receiverId); + if (failedOutcome) { + reject((0, utils_1.parseRpcError)(failedOutcome.outcome.status.Failure)); + } + else { + reject("Transaction execution error, failed to parse failure reason."); + } + // NOTE: after return, `finally { hideModal() }` will run. + return; + } + results.push(nearTx); + } + resolve(); + } + catch (error) { + logger.error(error); + reject(error); + } + finally { + hideModal(); + } + })(); + }); + })(); + return results; + }; + const signOut = async () => { + const [accountLogIn] = await getAccounts(); + if (accountLogIn.publicKey) { + try { + // Check that the key exists before making a transaction. + await nearProvider.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountLogIn.accountId, + public_key: accountLogIn.publicKey, + }); + // If there is a connection problem with the wallet, the user can cancel from the modal to skip the disconnect transaction. + // If not deleted, the access key will be reused during signIn. + await signAndSendTransactions([ + { + signerId: accountLogIn.accountId, + receiverId: accountLogIn.accountId, + actions: [ + { + type: "DeleteKey", + params: { + publicKey: accountLogIn.publicKey, + }, + }, + ], + }, + ]); + _state.keystore.removeKey(options.network.networkId, accountLogIn.accountId); + } + catch (error) { + logger.error(error); + } + } + try { + wagmiCore.disconnect(wagmiConfig); + } + catch (error) { + logger.error(error); + } + emitter.emit("signedOut", null); + cleanup(); + }; + return { + async signIn({ contractId, methodNames = [] }) { + logger.log("EthereumWallets:signIn", { contractId, methodNames }); + if (_state.isConnecting) { + throw new Error("SignIn request already received."); + } + try { + _state.isConnecting = true; + let unwatchAccountConnected; + let unsubscribeCloseModal; + let account = wagmiCore.getAccount(wagmiConfig); + let address = account.address?.toLowerCase(); + // Open web3Modal and wait for a wallet to be connected or for the web3Modal to be closed. + if (!address) { + try { + if (web3Modal) { + web3Modal.open(); + await (() => { + return new Promise((resolve, reject) => { + try { + unwatchAccountConnected = wagmiCore.watchAccount(wagmiConfig, { + onChange: (data) => { + if (!data.address) { + return; + } + resolve(data); + }, + }); + unsubscribeCloseModal = web3Modal.subscribeEvents((event) => { + const newAccount = wagmiCore.getAccount(wagmiConfig); + if (event.data.event === "MODAL_CLOSE" && + !newAccount.address) { + reject("Web3Modal closed without connecting to an Ethereum wallet."); + } + }); + } + catch (error) { + reject("User rejected"); + } + }); + })(); + } + else { + await wagmiCore.connect(wagmiConfig, { + connector: wagmiCore.injected(), + }); + } + account = wagmiCore.getAccount(wagmiConfig); + address = account.address?.toLowerCase(); + if (!address) { + throw new Error("Failed to get Ethereum wallet address"); + } + } + catch (error) { + logger.error(error); + throw new Error("Failed to connect Ethereum wallet."); + } + finally { + try { + // Prevent overshadowing the original exception + if (unwatchAccountConnected) { + unwatchAccountConnected(); + } + if (unsubscribeCloseModal) { + unsubscribeCloseModal(); + } + } + catch (error) { + logger.error(error); + } + } + } + else { + logger.log("Wallet already connected"); + } + await switchChain(); + // Login with FunctionCall access key, reuse keypair or create a new one. + const accountId = devMode ? address + "." + devModeAccount : address; + let publicKey; + if (contractId) { + const keyPair = await _state.keystore.getKey(options.network.networkId, accountId); + let reUseKeyPair = false; + if (keyPair) { + try { + await nearProvider.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: keyPair.getPublicKey().toString(), + }); + reUseKeyPair = true; + } + catch (error) { + logger.warn("Local access key cannot be reused."); + _state.keystore.removeKey(options.network.networkId, accountId); + } + } + if (reUseKeyPair) { + publicKey = keyPair.getPublicKey().toString(); + logger.log("Reusing existing publicKey:", publicKey); + } + else { + const newAccessKeyPair = nearAPI.utils.KeyPair.fromRandom("ed25519"); + publicKey = newAccessKeyPair.getPublicKey().toString(); + logger.log("Created new publicKey:", publicKey); + await signAndSendTransactions([ + { + signerId: accountId, + receiverId: accountId, + actions: [ + { + type: "AddKey", + params: { + publicKey, + accessKey: { + nonce: 0, + permission: { + receiverId: contractId, + allowance: utils_2.DEFAULT_ACCESS_KEY_ALLOWANCE, + methodNames, + }, + }, + }, + }, + ], + }, + ]); + await _state.keystore.setKey(options.network.networkId, accountId, newAccessKeyPair); + } + } + else if (alwaysOnboardDuringSignIn) { + // Check onboarding status and onboard the relayer if needed. + await signAndSendTransactions([]); + } + const accountLogIn = { + accountId, + publicKey, + }; + emitter.emit("signedIn", { + contractId: contractId, + methodNames: methodNames ?? [], + accounts: [accountLogIn], + }); + if (!_state.subscriptions.length) { + setupEvents(); + } + _state.isConnecting = false; + try { + // Hide modal which stays open after adding a new network. + if (web3Modal) { + web3Modal.close(); + } + } + catch (error) { + logger.error(error); + } + return [accountLogIn]; + } + catch (error) { + _state.isConnecting = false; + try { + // Prevent overshadowing the original exception + // Disconnect to let user start again from the beginning: wallet selection. + wagmiCore.disconnect(wagmiConfig); + } + catch (err) { + logger.error(err); + } + throw error; + } + }, + signOut, + getAccounts, + async verifyOwner({ message }) { + logger.log("EthereumWallets:verifyOwner", { message }); + throw new Error("Not implemented: ed25519 N/A, '\x19Ethereum Signed Message:\n' prefix is not compatible, use personal_sign or eth_signTypedData_v4 instead."); + }, + async signMessage({ message, nonce, recipient }) { + logger.log("EthereumWallets:signMessage", { message, nonce, recipient }); + throw new Error("Not implemented: ed25519 N/A, '\x19Ethereum Signed Message:\n' prefix is not compatible, use personal_sign or eth_signTypedData_v4 instead."); + }, + async signAndSendTransaction(transaction) { + logger.log("EthereumWallets:signAndSendTransaction", transaction); + const outcomes = await signAndSendTransactions([transaction]); + // Return the last transaction outcome. + return outcomes[outcomes.length - 1]; + }, + async signAndSendTransactions({ transactions }) { + logger.log("EthereumWallets:signAndSendTransactions", { transactions }); + return await signAndSendTransactions(transactions); + }, + }; +}; +function setupEthereumWallets(params) { + return async () => { + if (!wagmiCore) { + if (params.wagmiCore) { + wagmiCore = params.wagmiCore; + } + else { + await importWagmiCore(); + } + } + return { + id: "ethereum-wallets", + type: "injected", + metadata: { + name: "Ethereum Wallet", + description: "Ethereum wallets (EOA) on NEAR Protocol.", + iconUrl: params.iconUrl ?? icon_1.default, + deprecated: params.deprecated ?? false, + available: true, + downloadUrl: "", + }, + init: (config) => { + return EthereumWallets({ + ...config, + params, + }); + }, + }; + }; +} diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/modal.d.ts b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/modal.d.ts new file mode 100644 index 000000000..2d41e0fa3 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/modal.d.ts @@ -0,0 +1,24 @@ +import type { Transaction } from "@near-wallet-selector/core"; +import type { Chain } from "viem"; +export declare function createTxModal({ onCancel, txs, relayerPublicKey, explorerUrl, }: { + onCancel: () => void; + txs: Array; + relayerPublicKey: string; + explorerUrl: string; +}): { + showModal: () => void; + hideModal: () => void; + renderTxs: ({ selectedIndex, ethTxHashes, error, onConfirm, }: { + selectedIndex: number; + ethTxHashes: Array; + error?: string | null; + onConfirm?: () => void; + }) => void; +}; +export declare function createChainSwitchModal({ chain }: { + chain: Chain; +}): { + showModal: () => void; + hideModal: () => void; +}; +//# sourceMappingURL=modal.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/modal.d.ts.map b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/modal.d.ts.map new file mode 100644 index 000000000..a2790a430 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAIlC,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,GAAG,EACH,gBAAgB,EAChB,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;;;mEAqFI;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;KACxB;EA6PF;AAED,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE;;;EAyFjE"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/modal.js b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/modal.js new file mode 100644 index 000000000..a783c1ad7 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/modal.js @@ -0,0 +1,352 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createTxModal = createTxModal; +exports.createChainSwitchModal = createChainSwitchModal; +const viem_1 = require("viem"); +const utils_1 = require("./utils"); +const styles_1 = require("./styles"); +function createTxModal({ onCancel, txs, relayerPublicKey, explorerUrl, }) { + // Create a style element and append the CSS styles + const styleElement = window.document.createElement("style"); + styleElement.textContent = styles_1.modalStyles; + window.document.head.appendChild(styleElement); + // Container with display none/block + const modalContainer = window.document.createElement("div"); + modalContainer.classList.add("ethereum-wallet-modal"); + modalContainer.setAttribute("aria-labelledby", "modal-title"); + modalContainer.setAttribute("role", "dialog"); + modalContainer.setAttribute("aria-modal", "true"); + // Backdrop + const backdrop = window.document.createElement("div"); + backdrop.classList.add("ethereum-wallet-modal-backdrop"); + // Wrapper for modal + const modalWrapper = window.document.createElement("div"); + modalWrapper.classList.add("ethereum-wallet-modal-wrapper"); + // Modal content container + const modalContentContainer = window.document.createElement("div"); + modalContentContainer.classList.add("ethereum-wallet-modal-container"); + // Modal content + const isLogIn = txs.find((tx) => tx.actions[0].type === "AddKey"); + const isOnboard = txs.find((tx) => tx.actions[0].type === "AddKey" && + tx.actions[0].params.publicKey === relayerPublicKey); + const modalContent = window.document.createElement("div"); + modalContent.classList.add("ethereum-wallet-modal-content"); + modalContent.innerHTML = ` + ${txs.length === 1 && isLogIn + ? `

    ${isOnboard ? "Onboard" : "Log in"}

    ` + : txs.length === 1 && + txs[0].actions.length === 1 && + txs[0].actions[0].type === "DeleteKey" + ? "

    Log out

    " + : isLogIn + ? `

    Log in: send ${txs.length} transaction${txs.length > 1 ? "s" : ""}

    ` + : `

    Send ${txs.length} transaction${txs.length > 1 ? "s" : ""}

    `} +
    + + `; + // // Append the elements to form the complete structure + modalContentContainer.appendChild(modalContent); + modalWrapper.appendChild(modalContentContainer); + modalContainer.appendChild(backdrop); + modalContainer.appendChild(modalWrapper); + // Append modal container to document body + window.document.body.appendChild(modalContainer); + // Function to show the modal + const showModal = () => { + modalContainer.style.display = "block"; + }; + // Function to hide the modal + const hideModal = () => { + // modalContainer.style.display = "none"; + modalContainer.remove(); + }; + // On cancel button click + window.document + .querySelector(".ethereum-wallet-btn-cancel") + ?.addEventListener("click", () => { + onCancel(); + hideModal(); + }); + const renderTxs = ({ selectedIndex, ethTxHashes, error, onConfirm, }) => { + const container = document.querySelector(".ethereum-wallet-txs"); + container.innerHTML = ""; + txs.forEach((tx, i) => { + const txNumber = i + 1; + const singleTx = txs.length === 1; + const txElement = document.createElement("div"); + txElement.classList.add("ethereum-wallet-tx"); + if (singleTx) { + txElement.classList.add("ethereum-wallet-tx-single"); + } + const isCompleted = i < selectedIndex; + const isActive = i === selectedIndex; + const isPending = i > selectedIndex; + const isSent = selectedIndex < ethTxHashes.length; + const explorerLink = i < ethTxHashes.length + ? `${explorerUrl}/tx/${ethTxHashes[i]}` + : undefined; + if (!singleTx) { + if (isCompleted) { + txElement.classList.add("ethereum-wallet-tx-completed"); + } + if (isActive) { + txElement.classList.add("ethereum-wallet-tx-signing"); + } + if (isPending) { + txElement.classList.add("ethereum-wallet-tx-pending"); + } + } + txElement.innerHTML = ` + ${isCompleted + ? ` +
    +
    +

    Transaction ${txNumber}

    + ${explorerLink + ? ` + + + + ` + : ""} +
    + +
    + ` + : isPending + ? ` +
    +

    Transaction ${txNumber}

    + +
    + ` + : ` + ${!singleTx + ? ` +
    +

    Transaction ${txNumber}

    + +
    + ` + : ""} +
    + ${tx.actions[0].type === "AddKey" + ? tx.actions[0].params.accessKey.permission === "FullAccess" + ? ` +
    +

    WARNING: The application is requesting a FullAccess key. You can lose your account and all your assets. Only approve this transaction if you know what you are doing!

    +

    ` + : tx.actions[0].params.accessKey.permission.allowance === + "0" && + tx.actions[0].params.publicKey === relayerPublicKey && + tx.actions[0].params.accessKey.permission.receiverId === + tx.signerId && + tx.actions[0].params.accessKey.permission.methodNames + ?.length === 1 && + tx.actions[0].params.accessKey.permission + .methodNames[0] === utils_1.RLP_EXECUTE + ? ` +
    +

    This one-time transaction will onboard your account and enable you to transact on NEAR Protocol.

    +
    ` + : ` +
    +

    Connect to ${tx.actions[0].params.accessKey.permission.receiverId}

    +

    + Network Fee Allowance: ${tx.actions[0].params.accessKey.permission + .allowance === "0" + ? "unlimited" + : (0, viem_1.formatUnits)(BigInt(tx.actions[0].params.accessKey.permission + .allowance ?? utils_1.DEFAULT_ACCESS_KEY_ALLOWANCE), 24)} NEAR +

    + ${tx.actions[0].params.accessKey.permission + .allowance === "0" + ? "

    WARNING: this key will have unlimited allowance spendable towards network fees, only approve this transaction if you trust the application and you know what you are doing!

    " + : "

    This allowance is spendable by the application towards network fees incurred during use.

    "} +
    + ` + : tx.actions[0].type === "DeleteKey" + ? ` +
    +

    This is an optional transaction which removes the application access key. If you reject the transaction, the key will be reused when you login next time.

    +
    + ` + : tx.actions[0].type === "FunctionCall" + ? ` +
    +
    +
    From
    +
    ${tx.signerId}
    +
    +
    +
    To
    +
    ${tx.receiverId}
    +
    +
    +
    Type
    +
    ${tx.actions[0].params.methodName}
    +
    + ${tx.actions[0].params.deposit === "1" || + tx.actions[0].params.deposit === "0" + ? "" + : ` +
    +
    Deposit
    +
    ${(0, viem_1.formatUnits)(BigInt(tx.actions[0].params.deposit), 24)} NEAR
    +
    + `} +
    + ` + : tx.actions[0].type === "Transfer" + ? ` +
    +
    +
    From
    +
    ${tx.signerId}
    +
    +
    +
    To
    +
    ${tx.receiverId}
    +
    +
    +
    Type
    +
    ${tx.actions[0].type}
    +
    +
    +
    Amount
    +
    ${(0, viem_1.formatUnits)(BigInt(tx.actions[0].params.deposit), 24)} NEAR
    +
    +
    + ` + : ` +
    +

    Unknown transaction type.

    +
    + `} +
    + +
    +

    ${JSON.stringify(tx.actions[0], null, 2)}

    +
    + ${error ? `

    ${error}

    ` : ""} + ${onConfirm + ? `` + : `
    +

    + ${isSent + ? "Sending transaction" + : "Confirm in your wallet"} +

    +
    +
    `} + `} + `; + container.appendChild(txElement); + }); + if (onConfirm) { + window.document + .querySelector(`#confirm-btn-${selectedIndex}`) + ?.addEventListener("click", () => { + onConfirm(); + }); + } + const toggleButton = window.document.querySelector(".ethereum-wallet-btn-details"); + const detailsContainer = window.document.querySelector(".ethereum-wallet-txs-details"); + toggleButton?.addEventListener("click", () => { + if (!detailsContainer || !toggleButton) { + return; + } + if (detailsContainer.style.display === "none" || + detailsContainer.style.display === "") { + detailsContainer.style.display = "block"; + toggleButton.textContent = "Hide details"; + } + else { + detailsContainer.style.display = "none"; + toggleButton.textContent = "Show details"; + } + }); + }; + return { showModal, hideModal, renderTxs }; +} +function createChainSwitchModal({ chain }) { + // Create a style element and append the CSS styles + const styleElement = window.document.createElement("style"); + styleElement.textContent = styles_1.modalStyles; + window.document.head.appendChild(styleElement); + // Container with display none/block + const modalContainer = window.document.createElement("div"); + modalContainer.classList.add("ethereum-wallet-modal"); + modalContainer.setAttribute("aria-labelledby", "modal-title"); + modalContainer.setAttribute("role", "dialog"); + modalContainer.setAttribute("aria-modal", "true"); + // Backdrop + const backdrop = window.document.createElement("div"); + backdrop.classList.add("ethereum-wallet-modal-backdrop"); + // Wrapper for modal + const modalWrapper = window.document.createElement("div"); + modalWrapper.classList.add("ethereum-wallet-modal-wrapper"); + // Modal content container + const modalContentContainer = window.document.createElement("div"); + modalContentContainer.classList.add("ethereum-wallet-modal-container"); + // Modal content + const modalContent = window.document.createElement("div"); + modalContent.classList.add("ethereum-wallet-modal-content"); + modalContent.innerHTML = ` +

    Switch Network

    +
    +
    +

    Please approve the switch network request in your wallet.

    +

    If you experience problems connecting you may need to add the network manually from your wallet settings and try again.

    +
    +
    +
    +
    Network Name
    +
    ${chain.name}
    +
    +
    +
    RPC URL
    +
    ${chain.rpcUrls.default.http[0]}
    +
    +
    +
    Chain ID
    +
    ${chain.id}
    +
    +
    +
    Symbol
    +
    ${chain.nativeCurrency.symbol}
    +
    +
    +
    Block Explorer URL
    +
    ${chain.blockExplorers?.default.url}
    +
    +
    +
    + + `; + // // Append the elements to form the complete structure + modalContentContainer.appendChild(modalContent); + modalWrapper.appendChild(modalContentContainer); + modalContainer.appendChild(backdrop); + modalContainer.appendChild(modalWrapper); + // Append modal container to document body + window.document.body.appendChild(modalContainer); + // Function to show the modal + const showModal = () => { + modalContainer.style.display = "block"; + }; + // Function to hide the modal + const hideModal = () => { + // modalContainer.style.display = "none"; + modalContainer.remove(); + }; + // On cancel button click + window.document + .querySelector(".ethereum-wallet-btn-cancel") + ?.addEventListener("click", () => { + hideModal(); + }); + return { showModal, hideModal }; +} diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/styles.d.ts b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/styles.d.ts new file mode 100644 index 000000000..12a9d56c3 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/styles.d.ts @@ -0,0 +1,2 @@ +export declare const modalStyles = "\n .ethereum-wallet-modal *,\n .ethereum-wallet-modal *::before,\n .ethereum-wallet-modal *::after {\n box-sizing: border-box;\n }\n .ethereum-wallet-modal button {\n cursor: pointer;\n top: auto;\n }\n .ethereum-wallet-modal button:hover {\n top: auto;\n }\n .ethereum-wallet-modal button:focus-visible {\n top: auto;\n }\n\n .ethereum-wallet-modal dt {\n flex-shrink: 0;\n margin: 0;\n font-size: 14px;\n line-height: 20px;\n color: #202020;\n font-weight: 500;\n }\n .ethereum-wallet-modal dd {\n margin: 0;\n font-size: 14px;\n line-height: 20px;\n color: #202020;\n font-weight: 700;\n text-align: right;\n word-break: break-all;\n overflow-wrap: break-word;\n }\n\n .ethereum-wallet-modal {\n display: none;\n position: relative;\n z-index: 9999;\n }\n .ethereum-wallet-modal-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n }\n .ethereum-wallet-modal-wrapper {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n width: 100vw;\n overflow-y: auto;\n }\n .ethereum-wallet-modal-container {\n display: flex;\n min-height: 100%;\n align-items: center;\n justify-content: center;\n padding: 1rem;\n text-align: center;\n }\n .ethereum-wallet-modal-content {\n position: relative;\n overflow: hidden;\n border-radius: 1rem;\n background-color: #fff;\n padding: 20px;\n text-align: left;\n max-width: 400px;\n width: 100%;\n box-shadow:\n 0px 4px 8px rgba(0, 0, 0, 0.06),\n 0px 0px 0px 1px rgba(0, 0, 0, 0.06);\n }\n\n .ethereum-wallet-modal h2 {\n font-weight: 700;\n font-size: 24px;\n line-height: 30px;\n text-align: center;\n letter-spacing: -0.1px;\n color: #202020;\n margin: 0;\n }\n\n .ethereum-wallet-txs {\n margin: 20px 0 10px 0;\n display: flex;\n flex-direction: column;\n row-gap: 8px;\n }\n\n .ethereum-wallet-tx {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .ethereum-wallet-tx:not(.ethereum-wallet-tx-single) {\n padding: 0 10px;\n }\n .ethereum-wallet-tx-list-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 10px;\n width: 100%;\n }\n .ethereum-wallet-tx-list-header p {\n margin: 0;\n font-size: 14px;\n line-height: 20px;\n color: #202020;\n font-weight: 700;\n }\n .ethereum-wallet-tx-list-header svg {\n height: 24px;\n width: 24px;\n }\n\n .ethereum-wallet-tx-explorer-link {\n height: 24px;\n width: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n }\n .ethereum-wallet-tx-explorer-link:hover {\n background-color: #DDF3E4;\n }\n .ethereum-wallet-tx-explorer-link svg {\n height: 16px;\n width: 16px;\n color: #202020;\n }\n\n .ethereum-wallet-tx.ethereum-wallet-tx-signing {\n background-color: #F9F9F9;\n padding-bottom: 10px;\n border-radius: 8px;\n }\n .ethereum-wallet-tx.ethereum-wallet-tx-pending {\n background-color: #F9F9F9;\n border-radius: 8px;\n }\n .ethereum-wallet-tx.ethereum-wallet-tx-completed {\n background-color: #F2FCF5;\n border-radius: 8px;\n }\n\n .ethereum-wallet-tx-single .ethereum-wallet-tx-info-container {\n border-top: 1px solid #EBEBEB;\n border-bottom: 1px solid #EBEBEB;\n }\n .ethereum-wallet-tx-info-text > p {\n color: #646464;\n margin: 0;\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.04px;\n }\n .ethereum-wallet-tx-info-text > p:not(:last-child) {\n margin-bottom: 8px;\n }\n\n .ethereum-wallet-tx-info-row {\n padding: 14px 10px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n column-gap: 20px;\n }\n .ethereum-wallet-tx-info-col {\n padding: 14px 10px;\n display: flex;\n flex-direction: column;\n justify-content: start;\n row-gap: 4px;\n align-items: start;\n }\n .ethereum-wallet-tx-info-text {\n padding: 10px;\n }\n .ethereum-wallet-tx-params,\n .ethereum-wallet-tx-params dl {\n margin: 0;\n }\n .ethereum-wallet-tx .ethereum-wallet-tx-params {\n border-top: 1px solid #EBEBEB;\n border-bottom: 1px solid #EBEBEB;\n }\n .ethereum-wallet-tx-params div:not(:last-child) {\n border-bottom: 1px solid #EBEBEB;\n }\n\n .ethereum-wallet-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n color: #1C2024;\n border: 1px solid rgba(1, 6, 47, 0.173) !important;\n background-color: #fff !important;\n padding: 14px;\n font-size: 14px;\n line-height: 20px;\n font-weight: 700;\n }\n .ethereum-wallet-btn:hover {\n border: 1px solid rgba(1, 6, 47, 0.173);\n background-color: #F2F2F5 !important;\n }\n .ethereum-wallet-btn:focus-visible {\n outline: 2px solid;\n outline-offset: 2px;\n outline-color: #8B8D98;\n border: 1px solid rgba(1, 6, 47, 0.173);\n }\n .ethereum-wallet-btn-sm {\n padding: 10px 14px;\n font-size: 12px;\n line-height: 16px;\n }\n .ethereum-wallet-btn-xs {\n padding: 8px 12px;\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.04px;\n border-radius: 9999px;\n }\n .ethereum-wallet-btn-confirm {\n width: 100%;\n margin-top: 24px;\n }\n .ethereum-wallet-btn-cancel {\n width: 100%;\n background-color: #FFF9F9 !important;\n color: #dc2626 !important;\n border: 1px solid #fecaca !important;\n }\n .ethereum-wallet-btn-cancel:hover {\n background-color: #fef2f2 !important;\n }\n .ethereum-wallet-btn-details {\n margin-top: 20px;\n border-radius: 9999px;\n }\n\n .ethereum-wallet-tx-error {\n font-size: 14px;\n line-height: 20px;\n color: #dc2626;\n font-weight: 700;\n text-align: center;\n text-wrap: balance;\n margin-top: 20px;\n margin-bottom: 0px;\n }\n\n .ethereum-wallet-txs-details {\n display: none;\n margin-top: 10px;\n padding: 10px;\n background: #F1F1F1;\n border-radius: 8px;\n width: 100%;\n max-width: 100%;\n overflow: auto;\n }\n .ethereum-wallet-txs-details p {\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.04px;\n color: #646464;\n word-wrap: break-word;\n overflow-wrap: break-word;\n white-space: pre-wrap;\n margin: 0;\n }\n\n .ethereum-wallet-txs-status {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 14px;\n background: #F1F4FE;\n border-radius: 8px;\n width: 100%;\n margin-top: 24px;\n border: 1px solid rgba(0,0,0,0);\n }\n .ethereum-wallet-txs-status p {\n margin: 0;\n color: #384EAC;\n font-weight: 700;\n font-size: 14px;\n line-height: 20px;\n }\n\n .ethereum-wallet-tx-highlight {\n position: relative;\n z-index: 1;\n }\n .ethereum-wallet-tx-highlight::before {\n content: \"\";\n position: absolute;\n top: -4px;\n left: -6px;\n right: -6px;\n bottom: -4px;\n z-index: -1;\n background-color: #DDF3E4;\n border-radius: 8px;\n }\n\n .ethereum-wallet-spinner {\n position: absolute;\n right: 14px;\n top: 16px;\n width: 16px;\n height: 16px;\n border: 2px solid #384EAC;\n border-bottom-color: transparent;\n border-radius: 50%;\n animation: rotation 1s linear infinite;\n }\n @keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n"; +//# sourceMappingURL=styles.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/styles.d.ts.map b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/styles.d.ts.map new file mode 100644 index 000000000..af3fae78d --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/styles.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/lib/styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,olPAwVvB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/styles.js b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/styles.js new file mode 100644 index 000000000..f52fda136 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/styles.js @@ -0,0 +1,348 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.modalStyles = void 0; +exports.modalStyles = ` + .ethereum-wallet-modal *, + .ethereum-wallet-modal *::before, + .ethereum-wallet-modal *::after { + box-sizing: border-box; + } + .ethereum-wallet-modal button { + cursor: pointer; + top: auto; + } + .ethereum-wallet-modal button:hover { + top: auto; + } + .ethereum-wallet-modal button:focus-visible { + top: auto; + } + + .ethereum-wallet-modal dt { + flex-shrink: 0; + margin: 0; + font-size: 14px; + line-height: 20px; + color: #202020; + font-weight: 500; + } + .ethereum-wallet-modal dd { + margin: 0; + font-size: 14px; + line-height: 20px; + color: #202020; + font-weight: 700; + text-align: right; + word-break: break-all; + overflow-wrap: break-word; + } + + .ethereum-wallet-modal { + display: none; + position: relative; + z-index: 9999; + } + .ethereum-wallet-modal-backdrop { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.5); + } + .ethereum-wallet-modal-wrapper { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100vw; + overflow-y: auto; + } + .ethereum-wallet-modal-container { + display: flex; + min-height: 100%; + align-items: center; + justify-content: center; + padding: 1rem; + text-align: center; + } + .ethereum-wallet-modal-content { + position: relative; + overflow: hidden; + border-radius: 1rem; + background-color: #fff; + padding: 20px; + text-align: left; + max-width: 400px; + width: 100%; + box-shadow: + 0px 4px 8px rgba(0, 0, 0, 0.06), + 0px 0px 0px 1px rgba(0, 0, 0, 0.06); + } + + .ethereum-wallet-modal h2 { + font-weight: 700; + font-size: 24px; + line-height: 30px; + text-align: center; + letter-spacing: -0.1px; + color: #202020; + margin: 0; + } + + .ethereum-wallet-txs { + margin: 20px 0 10px 0; + display: flex; + flex-direction: column; + row-gap: 8px; + } + + .ethereum-wallet-tx { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + .ethereum-wallet-tx:not(.ethereum-wallet-tx-single) { + padding: 0 10px; + } + .ethereum-wallet-tx-list-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 12px 10px; + width: 100%; + } + .ethereum-wallet-tx-list-header p { + margin: 0; + font-size: 14px; + line-height: 20px; + color: #202020; + font-weight: 700; + } + .ethereum-wallet-tx-list-header svg { + height: 24px; + width: 24px; + } + + .ethereum-wallet-tx-explorer-link { + height: 24px; + width: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 6px; + } + .ethereum-wallet-tx-explorer-link:hover { + background-color: #DDF3E4; + } + .ethereum-wallet-tx-explorer-link svg { + height: 16px; + width: 16px; + color: #202020; + } + + .ethereum-wallet-tx.ethereum-wallet-tx-signing { + background-color: #F9F9F9; + padding-bottom: 10px; + border-radius: 8px; + } + .ethereum-wallet-tx.ethereum-wallet-tx-pending { + background-color: #F9F9F9; + border-radius: 8px; + } + .ethereum-wallet-tx.ethereum-wallet-tx-completed { + background-color: #F2FCF5; + border-radius: 8px; + } + + .ethereum-wallet-tx-single .ethereum-wallet-tx-info-container { + border-top: 1px solid #EBEBEB; + border-bottom: 1px solid #EBEBEB; + } + .ethereum-wallet-tx-info-text > p { + color: #646464; + margin: 0; + font-weight: 500; + font-size: 12px; + line-height: 16px; + letter-spacing: 0.04px; + } + .ethereum-wallet-tx-info-text > p:not(:last-child) { + margin-bottom: 8px; + } + + .ethereum-wallet-tx-info-row { + padding: 14px 10px; + display: flex; + flex-direction: row; + justify-content: space-between; + column-gap: 20px; + } + .ethereum-wallet-tx-info-col { + padding: 14px 10px; + display: flex; + flex-direction: column; + justify-content: start; + row-gap: 4px; + align-items: start; + } + .ethereum-wallet-tx-info-text { + padding: 10px; + } + .ethereum-wallet-tx-params, + .ethereum-wallet-tx-params dl { + margin: 0; + } + .ethereum-wallet-tx .ethereum-wallet-tx-params { + border-top: 1px solid #EBEBEB; + border-bottom: 1px solid #EBEBEB; + } + .ethereum-wallet-tx-params div:not(:last-child) { + border-bottom: 1px solid #EBEBEB; + } + + .ethereum-wallet-btn { + display: flex; + align-items: center; + justify-content: center; + border-radius: 8px; + color: #1C2024; + border: 1px solid rgba(1, 6, 47, 0.173) !important; + background-color: #fff !important; + padding: 14px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + } + .ethereum-wallet-btn:hover { + border: 1px solid rgba(1, 6, 47, 0.173); + background-color: #F2F2F5 !important; + } + .ethereum-wallet-btn:focus-visible { + outline: 2px solid; + outline-offset: 2px; + outline-color: #8B8D98; + border: 1px solid rgba(1, 6, 47, 0.173); + } + .ethereum-wallet-btn-sm { + padding: 10px 14px; + font-size: 12px; + line-height: 16px; + } + .ethereum-wallet-btn-xs { + padding: 8px 12px; + font-weight: 500; + font-size: 12px; + line-height: 16px; + letter-spacing: 0.04px; + border-radius: 9999px; + } + .ethereum-wallet-btn-confirm { + width: 100%; + margin-top: 24px; + } + .ethereum-wallet-btn-cancel { + width: 100%; + background-color: #FFF9F9 !important; + color: #dc2626 !important; + border: 1px solid #fecaca !important; + } + .ethereum-wallet-btn-cancel:hover { + background-color: #fef2f2 !important; + } + .ethereum-wallet-btn-details { + margin-top: 20px; + border-radius: 9999px; + } + + .ethereum-wallet-tx-error { + font-size: 14px; + line-height: 20px; + color: #dc2626; + font-weight: 700; + text-align: center; + text-wrap: balance; + margin-top: 20px; + margin-bottom: 0px; + } + + .ethereum-wallet-txs-details { + display: none; + margin-top: 10px; + padding: 10px; + background: #F1F1F1; + border-radius: 8px; + width: 100%; + max-width: 100%; + overflow: auto; + } + .ethereum-wallet-txs-details p { + font-weight: 500; + font-size: 12px; + line-height: 16px; + letter-spacing: 0.04px; + color: #646464; + word-wrap: break-word; + overflow-wrap: break-word; + white-space: pre-wrap; + margin: 0; + } + + .ethereum-wallet-txs-status { + position: relative; + display: flex; + justify-content: center; + align-items: center; + padding: 14px; + background: #F1F4FE; + border-radius: 8px; + width: 100%; + margin-top: 24px; + border: 1px solid rgba(0,0,0,0); + } + .ethereum-wallet-txs-status p { + margin: 0; + color: #384EAC; + font-weight: 700; + font-size: 14px; + line-height: 20px; + } + + .ethereum-wallet-tx-highlight { + position: relative; + z-index: 1; + } + .ethereum-wallet-tx-highlight::before { + content: ""; + position: absolute; + top: -4px; + left: -6px; + right: -6px; + bottom: -4px; + z-index: -1; + background-color: #DDF3E4; + border-radius: 8px; + } + + .ethereum-wallet-spinner { + position: absolute; + right: 14px; + top: 16px; + width: 16px; + height: 16px; + border: 2px solid #384EAC; + border-bottom-color: transparent; + border-radius: 50%; + animation: rotation 1s linear infinite; + } + @keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } +`; diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/utils.d.ts b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/utils.d.ts new file mode 100644 index 000000000..a9eeada49 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/utils.d.ts @@ -0,0 +1,82 @@ +export declare const ETHEREUM_ACCOUNT_ABI: readonly [{ + readonly name: "functionCall"; + readonly type: "function"; + readonly stateMutability: "payable"; + readonly inputs: readonly [{ + readonly type: "string"; + readonly name: "receiver_id"; + }, { + readonly type: "string"; + readonly name: "method_name"; + }, { + readonly type: "bytes"; + readonly name: "args"; + }, { + readonly type: "uint64"; + readonly name: "gas"; + }, { + readonly type: "uint32"; + readonly name: "yoctoNear"; + }]; + readonly outputs: readonly []; +}, { + readonly name: "transfer"; + readonly type: "function"; + readonly stateMutability: "payable"; + readonly inputs: readonly [{ + readonly type: "string"; + readonly name: "receiver_id"; + }, { + readonly type: "uint32"; + readonly name: "yoctoNear"; + }]; + readonly outputs: readonly []; +}, { + readonly name: "addKey"; + readonly type: "function"; + readonly stateMutability: "nonpayable"; + readonly inputs: readonly [{ + readonly type: "uint8"; + readonly name: "public_key_kind"; + }, { + readonly type: "bytes"; + readonly name: "public_key"; + }, { + readonly type: "uint64"; + readonly name: "nonce"; + }, { + readonly type: "bool"; + readonly name: "is_full_access"; + }, { + readonly type: "bool"; + readonly name: "is_limited_allowance"; + }, { + readonly type: "uint128"; + readonly name: "allowance"; + }, { + readonly type: "string"; + readonly name: "receiver_id"; + }, { + readonly type: "string[]"; + readonly name: "method_names"; + }]; + readonly outputs: readonly []; +}, { + readonly name: "deleteKey"; + readonly type: "function"; + readonly stateMutability: "nonpayable"; + readonly inputs: readonly [{ + readonly type: "uint8"; + readonly name: "public_key_kind"; + }, { + readonly type: "bytes"; + readonly name: "public_key"; + }]; + readonly outputs: readonly []; +}]; +export declare const DEFAULT_ACCESS_KEY_ALLOWANCE = "250000000000000000000000"; +export declare const RLP_EXECUTE = "rlp_execute"; +export declare const MAX_TGAS: bigint; +export declare class EthTxError extends Error { +} +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/utils.d.ts.map b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/utils.d.ts.map new file mode 100644 index 000000000..7c2956f50 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/lib/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B,CAAC;AACH,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,QAAQ,QAAiB,CAAC;AACvC,qBAAa,UAAW,SAAQ,KAAK;CAAG"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/utils.js b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/utils.js new file mode 100644 index 000000000..d10b395c7 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/ethereum-wallets/src/lib/utils.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EthTxError = exports.MAX_TGAS = exports.RLP_EXECUTE = exports.DEFAULT_ACCESS_KEY_ALLOWANCE = exports.ETHEREUM_ACCOUNT_ABI = void 0; +const viem_1 = require("viem"); +exports.ETHEREUM_ACCOUNT_ABI = (0, viem_1.parseAbi)([ + "function functionCall(string receiver_id, string method_name, bytes args, uint64 gas, uint32 yoctoNear) payable", + "function transfer(string receiver_id, uint32 yoctoNear) payable", + "function addKey(uint8 public_key_kind, bytes public_key, uint64 nonce, bool is_full_access, bool is_limited_allowance, uint128 allowance, string receiver_id, string[] method_names) external", + "function deleteKey(uint8 public_key_kind, bytes public_key) external", +]); +exports.DEFAULT_ACCESS_KEY_ALLOWANCE = "250000000000000000000000"; // 0.25 NEAR +exports.RLP_EXECUTE = "rlp_execute"; +exports.MAX_TGAS = BigInt(270e12); // Handle overhead of rlp_execute to validate the Ethereum transaction. +class EthTxError extends Error { +} +exports.EthTxError = EthTxError; diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/index.d.ts b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/index.d.ts new file mode 100644 index 000000000..9b70859cc --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/index.d.ts @@ -0,0 +1,2 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/index.d.ts.map b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/index.d.ts.map new file mode 100644 index 000000000..0d9c8c9c2 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../wallet-utils/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/index.js b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/index.js new file mode 100644 index 000000000..309bdb658 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = exports.createAction = void 0; +var wallet_utils_1 = require("./lib/wallet-utils"); +Object.defineProperty(exports, "createAction", { enumerable: true, get: function () { return wallet_utils_1.createAction; } }); +Object.defineProperty(exports, "signTransactions", { enumerable: true, get: function () { return wallet_utils_1.signTransactions; } }); diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/create-action.d.ts b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/create-action.d.ts new file mode 100644 index 000000000..da65b4629 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/create-action.d.ts @@ -0,0 +1,4 @@ +import * as nearAPI from "near-api-js"; +import type { Action } from "@near-wallet-selector/core"; +export declare const createAction: (action: Action) => nearAPI.transactions.Action; +//# sourceMappingURL=create-action.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map new file mode 100644 index 000000000..fe8487b52 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"create-action.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/create-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgB3E,eAAO,MAAM,YAAY,WAAY,MAAM,gCAqD1C,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/create-action.js b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/create-action.js new file mode 100644 index 000000000..b4a01ef64 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/create-action.js @@ -0,0 +1,78 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createAction = void 0; +const nearAPI = __importStar(require("near-api-js")); +const { transactions, utils } = nearAPI; +const getAccessKey = (permission) => { + if (permission === "FullAccess") { + return transactions.fullAccessKey(); + } + const { receiverId, methodNames = [] } = permission; + const allowance = permission.allowance + ? BigInt(permission.allowance) + : undefined; + return transactions.functionCallAccessKey(receiverId, methodNames, allowance); +}; +const createAction = (action) => { + switch (action.type) { + case "CreateAccount": + return transactions.createAccount(); + case "DeployContract": { + const { code } = action.params; + return transactions.deployContract(code); + } + case "FunctionCall": { + const { methodName, args, gas, deposit } = action.params; + console.log('alohaws action', action); + return transactions.functionCall(methodName, args, BigInt(gas), BigInt(deposit)); + } + case "Transfer": { + const { deposit } = action.params; + return transactions.transfer(BigInt(deposit)); + } + case "Stake": { + const { stake, publicKey } = action.params; + return transactions.stake(BigInt(stake), utils.PublicKey.from(publicKey)); + } + case "AddKey": { + const { publicKey, accessKey } = action.params; + return transactions.addKey(utils.PublicKey.from(publicKey), + // TODO: Use accessKey.nonce? near-api-js seems to think 0 is fine? + getAccessKey(accessKey.permission)); + } + case "DeleteKey": { + const { publicKey } = action.params; + return transactions.deleteKey(utils.PublicKey.from(publicKey)); + } + case "DeleteAccount": { + const { beneficiaryId } = action.params; + return transactions.deleteAccount(beneficiaryId); + } + default: + throw new Error("Invalid action type"); + } +}; +exports.createAction = createAction; diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts new file mode 100644 index 000000000..fd0b85445 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts @@ -0,0 +1,5 @@ +import type { Signer } from "@near-js/signers"; +import type { SignedTransaction } from "@near-js/transactions"; +import type { Network, Transaction } from "@near-wallet-selector/core/src"; +export declare const signTransactions: (transactions: Array, signer: Signer, network: Network) => Promise; +//# sourceMappingURL=sign-transactions.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map new file mode 100644 index 000000000..9624b4968 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sign-transactions.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/sign-transactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAIzE,eAAO,MAAM,gBAAgB,iBACb,KAAK,CAAC,WAAW,CAAC,UACxB,MAAM,WACL,OAAO,iCAoDjB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/sign-transactions.js b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/sign-transactions.js new file mode 100644 index 000000000..c8c3b6519 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/sign-transactions.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = void 0; +const crypto_1 = require("@near-js/crypto"); +const transactions_1 = require("@near-js/transactions"); +const utils_1 = require("@near-js/utils"); +// import * as nearAPI from "near-api-js"; +const providers_1 = require("@near-js/providers"); +const create_action_1 = require("./create-action"); +const signTransactions = async (transactions, signer, network) => { + const provider = new providers_1.JsonRpcProvider({ + url: network.nodeUrl, + }); + const signedTransactions = []; + for (let i = 0; i < transactions.length; i++) { + const publicKey = await signer.getPublicKey(transactions[i].signerId, network.networkId); + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transactions[i].signerId, + public_key: publicKey.toString(), + }), + ]); + const actions = transactions[i].actions.map((action) => (0, create_action_1.createAction)(action)); + const transaction = (0, transactions_1.createTransaction)(transactions[i].signerId, new crypto_1.PublicKey({ + keyType: crypto_1.KeyType.ED25519, + data: publicKey.data + }), + // PublicKey.from(publicKey.toString()), + transactions[i].receiverId, accessKey.nonce + i + 1, actions, (0, utils_1.baseDecode)(block.header.hash)); + const response = await (0, transactions_1.signTransaction)(transaction, signer, transactions[i].signerId, network.networkId); + signedTransactions.push(response[1]); + } + return signedTransactions; +}; +exports.signTransactions = signTransactions; diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts new file mode 100644 index 000000000..ca97d2268 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts @@ -0,0 +1,4 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; +//# sourceMappingURL=wallet-utils.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map new file mode 100644 index 000000000..209167ee4 --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/wallet-utils.js b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/wallet-utils.js new file mode 100644 index 000000000..1d0db17bd --- /dev/null +++ b/packages/ethereum-wallets/dist/cjs/wallet-utils/src/lib/wallet-utils.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = exports.createAction = void 0; +const create_action_1 = require("./create-action"); +Object.defineProperty(exports, "createAction", { enumerable: true, get: function () { return create_action_1.createAction; } }); +const sign_transactions_1 = require("./sign-transactions"); +Object.defineProperty(exports, "signTransactions", { enumerable: true, get: function () { return sign_transactions_1.signTransactions; } }); diff --git a/packages/ethereum-wallets/dist/esm/core/src/index.d.ts b/packages/ethereum-wallets/dist/esm/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/index.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/index.js b/packages/ethereum-wallets/dist/esm/core/src/index.js new file mode 100644 index 000000000..a545ffa59 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/index.js @@ -0,0 +1,5 @@ +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export { EventEmitter } from "./lib/services"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/constants.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/constants.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/constants.js b/packages/ethereum-wallets/dist/esm/core/src/lib/constants.js new file mode 100644 index 000000000..a75f1a50e --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/constants.js @@ -0,0 +1,11 @@ +export const PACKAGE_NAME = "near-wallet-selector"; +export const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export const REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +export const CONTRACT = "contract"; +export const PENDING_CONTRACT = "contract:pending"; +export const SELECTED_WALLET_ID = `selectedWalletId`; +export const PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/detect-browser.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/detect-browser.js b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..c4e583914 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,70 @@ +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +export const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/getActiveAccount.js b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..b2db314cb --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,3 @@ +export const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/index.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/index.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/index.js b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/index.js new file mode 100644 index 000000000..69aaf908c --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/index.js @@ -0,0 +1,5 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/payload.js b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..f2a7f147e --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,97 @@ +import { serialize } from "borsh"; +export const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +export const payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +export const serializeNep413 = (signMessageParams) => { + const payload = createPayload(signMessageParams); + return Buffer.from(serialize(payloadSchema, payload)); +}; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..f08e83f02 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,39 @@ +import { serialize } from "borsh"; +import { sha256 } from "js-sha256"; +import { payloadSchema } from "./payload"; +import { publicKeyFrom } from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import { JsonRpcProvider } from "@near-js/providers"; +export const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = serialize(payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = publicKeyFrom(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +export const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/waitFor.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/waitFor.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/waitFor.js b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..55fc5398f --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/helpers/waitFor.js @@ -0,0 +1,22 @@ +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +export const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/ar.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/bg.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/en.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/es.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/hi.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/hr.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/ko.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/mk.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/sl.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/sr.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/vi.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/locale/zh.json b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/options.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/options.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/options.js b/packages/ethereum-wallets/dist/esm/core/src/lib/options.js new file mode 100644 index 000000000..fa6b65f26 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/options.js @@ -0,0 +1,40 @@ +import { WebStorageService } from "./services"; +export const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +export const resolveNetwork = (network) => { + return typeof network === "string" ? getNetworkPreset(network) : network; +}; +export const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: resolveNetwork(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new WebStorageService(), + }; +}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/options.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/options.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/options.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/options.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/options.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..304200d75 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,16 @@ +import { EventEmitter as NEventEmitter } from "events"; +export class EventEmitter { + emitter = new NEventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/index.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/index.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/index.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/index.js new file mode 100644 index 000000000..5301a0f98 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/index.js @@ -0,0 +1,11 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..d1ca57bc4 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,32 @@ +export class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +export const logger = new Logger(); diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..bfcf13b62 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,43 @@ +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +export class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new JsonRpcProvider({ url })) + : []; + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..a9175d614 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,25 @@ +const KEY_DELIMITER = ":"; +export class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/storage.service.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/web-storage.service.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..3b6ee32f5 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,20 @@ +export class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..d5aa498d4 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,321 @@ +import { EventEmitter } from "../event-emitter/event-emitter.service"; +import { Logger, logger } from "../logger/logger.service"; +import { RECENTLY_SIGNED_IN_WALLETS, PACKAGE_NAME, PENDING_CONTRACT, PENDING_SELECTED_WALLET_ID, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "../../constants"; +import { JsonStorage } from "../storage/json-storage.service"; +export class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger.log(`Failed to validate ${wallet.id} during setup`); + logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger.log("Failed to sign out existing wallet"); + logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger.log(`Failed to sign out ${wallet.id}`); + logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new Logger(module.id), + storage: new JsonStorage(this.storage, [PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger.log("Failed to setup module"); + logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger.error("Failed to sign in to wallet. " + err); + } + } + } +} diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/store.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/store.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/store.js b/packages/ethereum-wallets/dist/esm/core/src/lib/store.js new file mode 100644 index 000000000..32dc79078 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/store.js @@ -0,0 +1,154 @@ +import { Subject, BehaviorSubject, scan } from "rxjs"; +import { logger, JsonStorage } from "./services"; +import { PACKAGE_NAME, CONTRACT, SELECTED_WALLET_ID, RECENTLY_SIGNED_IN_WALLETS, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "./constants"; +const reducer = (state, action) => { + logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? REMEMBER_RECENT_WALLETS_STATE.DISABLED + : REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +export const createStore = async (storage) => { + const jsonStorage = new JsonStorage(storage, PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(CONTRACT), + selectedWalletId: await jsonStorage.getItem(SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new BehaviorSubject(initialState); + const actions$ = new Subject(); + actions$.pipe(scan(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, CONTRACT, "contract"); + syncStorage(prevState, state, RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/store.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/store.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/store.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/store.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/store.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/testUtils.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/testUtils.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/testUtils.js b/packages/ethereum-wallets/dist/esm/core/src/lib/testUtils.js new file mode 100644 index 000000000..7e90e1ce8 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/testUtils.js @@ -0,0 +1,103 @@ +// Remove Jest import +// import * as jest from "jest"; +import { mock } from "jest-mock-extended"; +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, WalletModules } from "./services"; +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +export const mockWallet = async (factory, deps) => { + const { options, storage } = resolveOptions({ + network: getNetworkPreset("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new EventEmitter(); + const store = await createStore(storage); + const walletModules = new WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || mock(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/translate/translate.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/translate/translate.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/translate/translate.js b/packages/ethereum-wallets/dist/esm/core/src/lib/translate/translate.js new file mode 100644 index 000000000..610c02a94 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/translate/translate.js @@ -0,0 +1,73 @@ +import en from "../locale/en.json"; +import es from "../locale/es.json"; +import zh from "../locale/zh.json"; +import bg from "../locale/bg.json"; +import ko from "../locale/ko.json"; +import vi from "../locale/vi.json"; +import hi from "../locale/hi.json"; +import ar from "../locale/ar.json"; +import hr from "../locale/hr.json"; +import mk from "../locale/mk.json"; +import sl from "../locale/sl.json"; +import sr from "../locale/sr.json"; +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en; + case "es": + return es; + case "zh": + return zh; + case "bg": + return bg; + case "ko": + return ko; + case "vi": + return vi; + case "hi": + return hi; + case "ar": + return ar; + case "hr": + return hr; + case "mk": + return mk; + case "sl": + return sl; + case "sr": + return sr; + default: + return en; + } +}; +let chosenLang; +export const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +export const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/utils.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/utils.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/utils.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/utils.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/utils.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.js b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..af67afbb6 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.js @@ -0,0 +1,79 @@ +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, Logger, WalletModules, Provider } from "./services"; +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export const setupWalletSelector = async (params) => { + const { options, storage } = resolveOptions(params); + Logger.debug = options.debug; + const emitter = new EventEmitter(); + const store = await createStore(storage); + const network = await getNetworkPreset(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet-selector.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/index.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/index.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/index.js b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/index.js new file mode 100644 index 000000000..bd35cba8b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/index.js @@ -0,0 +1,2 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/transactions.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/transactions.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/transactions.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/wallet.types.d.ts b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/wallet.types.js b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/core/src/lib/wallet/wallet.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/index.d.ts b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/index.d.ts new file mode 100644 index 000000000..5a5fb6a0d --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupEthereumWallets } from "./lib"; +export type { EthereumWalletsParams } from "./lib"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/index.d.ts.map b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/index.d.ts.map new file mode 100644 index 000000000..85a82afa8 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,YAAY,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/index.js b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/index.js new file mode 100644 index 000000000..79f8fd144 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/index.js @@ -0,0 +1 @@ +export { setupEthereumWallets } from "./lib"; diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/icon.d.ts b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/icon.d.ts new file mode 100644 index 000000000..582a3212b --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/png;base64,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"; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/icon.d.ts.map b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/icon.d.ts.map new file mode 100644 index 000000000..97220b1c7 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAAgr8H"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/icon.js b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/icon.js new file mode 100644 index 000000000..79c53346a --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/icon.js @@ -0,0 +1 @@ +export default `data:image/png;base64,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`; diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/index.d.ts b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/index.d.ts new file mode 100644 index 000000000..277442130 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/index.d.ts @@ -0,0 +1,30 @@ +import { type WalletModuleFactory, type InjectedWallet } from "@near-wallet-selector/core"; +import { type Config } from "@wagmi/core"; +type WagmiCoreActionsType = typeof import("@wagmi/core"); +export interface EthereumWalletsParams { + wagmiConfig: Config; + web3Modal?: { + open: () => void; + close: () => void; + subscribeEvents: (f: (event: { + data: { + event: string; + }; + }) => void) => () => void; + getState: () => { + open: boolean; + selectedNetworkId?: number; + }; + }; + wagmiCore?: WagmiCoreActionsType; + chainId?: number; + alwaysOnboardDuringSignIn?: boolean; + iconUrl?: string; + devMode?: boolean; + devModeAccount?: string; + deprecated?: boolean; + nearNodeUrl?: string; +} +export declare function setupEthereumWallets(params: EthereumWalletsParams): WalletModuleFactory; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/index.d.ts.map b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/index.d.ts.map new file mode 100644 index 000000000..014cca081 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,mBAAmB,EAKxB,KAAK,cAAc,EAEpB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAKrB,KAAK,oBAAoB,GAAG,cAAc,aAAa,CAAC,CAAC;AAoBzD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,MAAM,IAAI,CAAC;QACjB,KAAK,EAAE,MAAM,IAAI,CAAC;QAClB,eAAe,EAAE,CACf,CAAC,EAAE,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,KAAK,IAAI,KAC5C,MAAM,IAAI,CAAC;QAChB,QAAQ,EAAE,MAAM;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/D,CAAC;IACF,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA46BD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,qBAAqB,GAC5B,mBAAmB,CAAC,cAAc,CAAC,CA4BrC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/index.js b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/index.js new file mode 100644 index 000000000..ed04e2967 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/index.js @@ -0,0 +1,850 @@ +import * as nearAPI from "near-api-js"; +import { JsonRpcProvider } from "@near-js/providers"; +import { stringifyJsonOrBytes } from "@near-js/transactions"; +import { parseRpcError } from "@near-js/utils"; +import { signTransactions } from "@near-wallet-selector/wallet-utils"; +import { bytesToHex, keccak256, toHex } from "viem"; +import bs58 from "bs58"; +let wagmiCore = null; +const importWagmiCore = async () => { + // Commonjs support NA with @wagmi/core: + // https://wagmi.sh/core/guides/migrate-from-v1-to-v2#dropped-commonjs-support + return import("@wagmi/core").then((module) => { + wagmiCore = module; + }); +}; +import icon from "./icon"; +import { createTxModal, createChainSwitchModal } from "./modal"; +import { ETHEREUM_ACCOUNT_ABI, DEFAULT_ACCESS_KEY_ALLOWANCE, RLP_EXECUTE, MAX_TGAS, EthTxError, } from "./utils"; +const setupEthereumWalletsState = async (id) => { + const keystore = new nearAPI.keyStores.BrowserLocalStorageKeyStore(window.localStorage, `near-wallet-selector:${id}:keystore:`); + return { + keystore, + subscriptions: [], + isConnecting: false, + }; +}; +const EthereumWallets = async ({ id, options, store, provider, emitter, logger, params: { wagmiConfig, web3Modal, chainId, alwaysOnboardDuringSignIn = false, devMode, devModeAccount = "eth-wallet.testnet", nearNodeUrl, }, }) => { + if (!wagmiCore) { + throw new Error("@wagmi/core not imported."); + } + const _state = await setupEthereumWalletsState(id); + const expectedChainId = chainId ?? (options.network.networkId === "mainnet" ? 397 : 398); + const chain = wagmiConfig.chains.find((c) => c.id === expectedChainId); + if (!chain) { + throw new Error("Failed to parse NEAR chain from wagmiConfig."); + } + const nearRpc = chain.rpcUrls.default.http[0]; + if (!nearRpc) { + throw new Error("Failed to parse NEAR rpc url from wagmiConfig."); + } + const nearExplorer = chain.blockExplorers?.default.url; + if (!nearExplorer) { + throw new Error("Failed to parse NEAR explorer url from wagmiConfig."); + } + // NOTE: use a custom provider because the failover provider doesn't give error details. + const nearProvider = new JsonRpcProvider(nearNodeUrl ?? + // @ts-expect-error + provider.provider.connection ?? + // @ts-expect-error + provider.provider.providers[ + // @ts-expect-error + provider.provider.currentProviderIndex].connection); + const getAccounts = async () => { + const address = wagmiCore.getAccount(wagmiConfig).address?.toLowerCase(); + const account = devMode ? address + "." + devModeAccount : address; + if (!account || !address) { + return []; + } + const keyPair = await _state.keystore.getKey(options.network.networkId, account); + const accountLogIn = { + accountId: account, + publicKey: keyPair ? keyPair.getPublicKey().toString() : undefined, + }; + return [accountLogIn]; + }; + const cleanup = async () => { + _state.subscriptions.forEach((subscription) => subscription.remove()); + _state.subscriptions = []; + }; + const executeTransaction = async ({ tx, relayerPublicKey, }) => { + const to = (/^0x([A-Fa-f0-9]{40})$/.test(tx.receiverId) + ? tx.receiverId + : "0x" + keccak256(toHex(tx.receiverId)).slice(26)); + // Created this defaults variable during the process + // of getting wallet selector packages and near-js packages + // working smoothly on LTS node version. + // Feel free to update/remove/whatever + let ethTxDefaults = { + abi: [], + functionName: "", + address: `0x`, + chain: undefined, + account: `0x` + }; + let ethTx; + switch (tx.actions[0].type) { + case "CreateAccount": + break; + case "DeployContract": + break; + case "Stake": + break; + case "DeleteAccount": + break; + case "AddKey": { + const publicKey = bytesToHex(bs58.decode(tx.actions[0].params.publicKey.split(":")[1])); + if (tx.actions[0].params.accessKey.permission === "FullAccess") { + const args = [ + 0, // 0 stands for ed25519 + publicKey, + BigInt(tx.actions[0].params.accessKey.nonce ?? 0), + true, + false, // Not used with is_full_access + BigInt(0), // Not used with is_full_access + "", // Not used with is_full_access + [], // Not used with is_full_access + ]; + ethTx = { + abi: ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "addKey", + args, + chainId: expectedChainId, + type: "legacy", + }; + throw new Error("Requesting a FullAccess key is not allowed."); + } + else { + const allowance = BigInt(tx.actions[0].params.accessKey.permission.allowance ?? + DEFAULT_ACCESS_KEY_ALLOWANCE); + const args = [ + 0, // 0 stands for ed25519 + publicKey, + BigInt(tx.actions[0].params.accessKey.nonce ?? 0), + false, + allowance > 0 ? true : false, + allowance, + tx.actions[0].params.accessKey.permission.receiverId, + tx.actions[0].params.accessKey.permission.methodNames ?? [], + ]; + ethTx = { + abi: ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "addKey", + args, + gasPrice: tx.actions[0].params.publicKey === relayerPublicKey && + tx.receiverId === + tx.actions[0].params.accessKey.permission.receiverId + ? // Free onboarding tx: fix 1 wei gasPrice because some wallets ignore 0 gasPrice. + // Rpc will also return a dust eth_getBalance for accounts not yet onboarded to trick wallets + // into accepting this free transaction even before the user owns NEAR. + BigInt(1) + : undefined, + chainId: expectedChainId, + type: "legacy", + // uhhh + }; + } + break; + } + case "DeleteKey": { + const publicKey = bytesToHex(bs58.decode(tx.actions[0].params.publicKey.split(":")[1])); + const args = [ + 0, // 0 stands for ed25519 + publicKey, + ]; + ethTx = { + abi: ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "deleteKey", + args, + chainId: expectedChainId, + type: "legacy", + }; + break; + } + case "FunctionCall": { + const yoctoNear = BigInt(tx.actions[0].params.deposit) % BigInt(1e6); + const value = BigInt(tx.actions[0].params.deposit) / BigInt(1e6); + const requestedGas = BigInt(tx.actions[0].params.gas); + const nearGas = requestedGas <= MAX_TGAS ? requestedGas : MAX_TGAS; + const args = [ + tx.receiverId, + tx.actions[0].params.methodName, + bytesToHex(stringifyJsonOrBytes(tx.actions[0].params.args)), + nearGas, + +yoctoNear.toString(), + ]; + ethTx = { + abi: ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "functionCall", + args, + value, + chainId: expectedChainId, + type: "legacy", + }; + break; + } + case "Transfer": { + const yoctoNear = BigInt(tx.actions[0].params.deposit) % BigInt(1e6); + const value = BigInt(tx.actions[0].params.deposit) / BigInt(1e6); + const args = [tx.receiverId, +yoctoNear.toString()]; + ethTx = { + abi: ETHEREUM_ACCOUNT_ABI, + address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, + functionName: "transfer", + args, + value, + chainId: expectedChainId, + type: "legacy", + }; + break; + } + default: { + throw new Error("Invalid action type"); + } + } + // NOTE: re-add simulateContract and parse errors after eth_call implements errors. + // const { request } = await wagmiCore!.simulateContract(wagmiConfig, ethTx); + const result = await wagmiCore.writeContract(wagmiConfig, ethTx); + return result; + }; + // Watch Ethereum wallet changes. + const setupEvents = async () => { + const unwatchAccount = wagmiCore.watchAccount(wagmiConfig, { + onChange: async (data) => { + // Ethereum wallet disconnected: also disconnect NEAR account. + if (!data.address && data.status === "disconnected") { + emitter.emit("signedOut", null); + return; + } + // Ethereum wallet switched connected account: also switch NEAR account if already signed in or disconnect. + if (data.address && data.status === "connected") { + if (store.getState().contract?.contractId) { + const address = data.address.toLowerCase(); + const keyPair = await _state.keystore.getKey(options.network.networkId, devMode ? address + "." + devModeAccount : address); + if (!keyPair) { + try { + wagmiCore.disconnect(wagmiConfig); + } + catch (error) { + logger.error(error); + } + emitter.emit("signedOut", null); + return; + } + } + emitter.emit("accountsChanged", { accounts: await getAccounts() }); + } + }, + }); + _state.subscriptions.push({ remove: () => unwatchAccount() }); + }; + setupEvents(); + // Add signerId and receiverId defaults. + const transformTransactions = async (transactions) => { + const state = store.getState(); + const { contract } = state; + const [accountLogIn] = await getAccounts(); + if (!accountLogIn) { + throw new Error("No active account"); + } + return transactions.map((transaction) => { + if (!contract && !transaction.receiverId) { + throw new Error(`Missing receiverId, got '${transaction.receiverId}'`); + } + return { + ...transaction, + signerId: transaction.signerId || accountLogIn.accountId, + receiverId: transaction.receiverId || contract.contractId, + }; + }); + }; + // Separate actions into individual transactions because not available in 0x accounts. + const transformEthereumTransactions = (transactions) => { + return transactions + .map((transaction) => { + return transaction.actions.map((action) => { + return { + signerId: transaction.signerId, + receiverId: transaction.receiverId, + actions: [action], + }; + }); + }) + .flat(); + }; + // Check if accessKey is usable to execute all transaction. + const validateAccessKey = ({ transactions, accessKey, }) => { + if (accessKey.permission === "FullAccess") { + return true; + } + return transactions.every((tx) => { + // eslint-disable-next-line @typescript-eslint/naming-convention + const { receiver_id, method_names } = accessKey.permission.FunctionCall; + if (receiver_id !== tx.receiverId) { + return false; + } + return tx.actions.every((action) => { + if (action.type !== "FunctionCall") { + return false; + } + const { methodName, deposit } = action.params; + if (method_names.length && !method_names.includes(methodName)) { + return false; + } + return BigInt(deposit) <= 0; + }); + }); + }; + // Get the relayer public key and onboarding transaction if needed. + const getRelayerOnboardingInfo = async ({ accountId, }) => { + let relayerPublicKey; + try { + const response = await fetch(nearRpc, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + jsonrpc: "2.0", + id: 3, + method: "near_getPublicKey", + }), + }); + const { result } = await response.json(); + relayerPublicKey = + "ed25519:" + bs58.encode(Buffer.from(result.public_key, "hex")); + } + catch (error) { + logger.error(error); + throw new Error("Failed to fetch the relayer's public key."); + } + try { + const key = await nearProvider.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: relayerPublicKey, + }); + logger.log("User account ready, relayer access key onboarded.", relayerPublicKey, key); + return { relayerPublicKey, onboardingTransaction: null }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } + catch (error) { + logger.error(error); + if (!error.message?.includes("does not exist while viewing") && + !error.message?.includes("doesn't exist") && + !error.message?.includes("does not exist") && + !error.message?.includes("has never been observed on the node")) { + throw new Error("Failed to view the relayer public key (view_access_key)."); + } + logger.warn("Need to add the relayer access key:", relayerPublicKey); + // Add the relayer's access key on-chain. + return { + relayerPublicKey, + onboardingTransaction: { + signerId: accountId, + receiverId: accountId, + actions: [ + { + type: "AddKey", + params: { + publicKey: relayerPublicKey, + accessKey: { + nonce: 0, + permission: { + receiverId: accountId, + allowance: "0", + methodNames: [RLP_EXECUTE], + }, + }, + }, + }, + ], + }, + }; + } + }; + const switchChain = async () => { + const account = wagmiCore.getAccount(wagmiConfig); + if (account.chainId !== expectedChainId) { + const { showModal, hideModal } = createChainSwitchModal({ + chain, + }); + showModal(); + try { + await wagmiCore.switchChain(wagmiConfig, { + chainId: expectedChainId, + }); + } + catch (error) { + logger.error(error); + // TODO: add the link to onboarding page when available. + throw new Error("Wallet didn't connect to NEAR Protocol network, try adding and selecting the network manually inside wallet settings."); + // NOTE: we don't hide the modal in case of error to allow the user to add the network manually. + } + hideModal(); + } + }; + const signAndSendTransactions = async (transactions) => { + const nearTxs = await transformTransactions(transactions); + const [accountLogIn] = await getAccounts(); + // If transactions can be executed with FunctionCall access key do it, otherwise execute 1 by 1 with Ethereum wallet. + if (accountLogIn.publicKey && nearTxs.length) { + let accessKeyUsable; + try { + const accessKey = await nearProvider.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountLogIn.accountId, + public_key: accountLogIn.publicKey, + }); + accessKeyUsable = validateAccessKey({ + transactions: nearTxs, + accessKey, + }); + } + catch (error) { + logger.error(error); + accessKeyUsable = false; + } + if (accessKeyUsable) { + const signer = new nearAPI.InMemorySigner(_state.keystore); + const signedTransactions = await signTransactions(nearTxs, signer, options.network); + const results = []; + for (let i = 0; i < signedTransactions.length; i += 1) { + const nearTx = await nearProvider.sendTransaction(signedTransactions[i]); + logger.log("NEAR transaction:", nearTx); + if (typeof nearTx.status === "object" && + typeof nearTx.status.Failure === "object" && + nearTx.status.Failure !== null) { + logger.error("Transaction execution error."); + throw parseRpcError(nearTx.status.Failure); + } + results.push(nearTx); + } + return results; + } + } + const { relayerPublicKey, onboardingTransaction } = await getRelayerOnboardingInfo({ + accountId: accountLogIn.accountId, + }); + let txs = transformEthereumTransactions(nearTxs); + if (onboardingTransaction) { + // Onboard the relayer before executing other transactions. + txs = [onboardingTransaction, ...txs]; + } + await switchChain(); + const results = []; + await (() => { + return new Promise((resolve, reject) => { + const { showModal, hideModal, renderTxs } = createTxModal({ + onCancel: () => { + reject("User canceled Ethereum wallet transaction(s)."); + }, + txs, + relayerPublicKey, + explorerUrl: nearExplorer, + }); + showModal(); + (async () => { + try { + const ethTxHashes = []; + for (const [index, tx] of txs.entries()) { + let txHash; + let txError = null; + while (!txHash) { + try { + await (() => { + return new Promise((resolveTx, rejectTx) => { + renderTxs({ + selectedIndex: index, + ethTxHashes, + error: txError, + onConfirm: async () => { + try { + txError = null; + renderTxs({ + selectedIndex: index, + ethTxHashes, + error: txError, + }); + txHash = await executeTransaction({ + tx, + relayerPublicKey, + }); + resolveTx(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } + catch (err) { + logger.error(err); + if (!err.message?.includes("reject") && + !err.message?.includes("denied")) { + txError = "Transaction execution error."; + } + rejectTx(new EthTxError("Transaction request error.")); + } + }, + }); + }); + })(); + } + catch (error) { + logger.error(error); + if (!(error instanceof EthTxError)) { + throw new Error("Ethereum modal render error."); + } + } + } + logger.log(`Sent transaction: ${txHash}`); + ethTxHashes.push(txHash); + renderTxs({ + selectedIndex: index, + ethTxHashes, + }); + await new Promise((r) => setTimeout(r, 2000)); + let receipt; + try { + // NOTE: error is thrown if tx failed so we catch it to get the receipt. + receipt = await wagmiCore.waitForTransactionReceipt(wagmiConfig, { + hash: txHash, + chainId: expectedChainId, + }); + } + catch (error) { + logger.error(error); + while (!receipt) { + try { + await new Promise((r) => setTimeout(r, 1000)); + receipt = await wagmiCore.getTransactionReceipt(wagmiConfig, { + hash: txHash, + chainId: expectedChainId, + }); + } + catch (err) { + logger.log(err); + } + } + } + logger.log("Receipt:", receipt); + let nearTx; + while (!nearTx) { + try { + await new Promise((r) => setTimeout(r, 1000)); + nearTx = await nearProvider.txStatus( + /* // @ts-expect-error */ + receipt.nearTransactionHash, accountLogIn.accountId); + } + catch (err) { + logger.log(err); + } + } + logger.log("NEAR transaction:", nearTx); + if (receipt.status !== "success") { + const failedOutcome = nearTx.receipts_outcome.find(({ outcome }) => typeof outcome.status === "object" && + typeof outcome.status.Failure === "object" && + outcome.status.Failure !== null && + outcome.executor_id === tx.receiverId); + if (failedOutcome) { + reject(parseRpcError(failedOutcome.outcome.status.Failure)); + } + else { + reject("Transaction execution error, failed to parse failure reason."); + } + // NOTE: after return, `finally { hideModal() }` will run. + return; + } + results.push(nearTx); + } + resolve(); + } + catch (error) { + logger.error(error); + reject(error); + } + finally { + hideModal(); + } + })(); + }); + })(); + return results; + }; + const signOut = async () => { + const [accountLogIn] = await getAccounts(); + if (accountLogIn.publicKey) { + try { + // Check that the key exists before making a transaction. + await nearProvider.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountLogIn.accountId, + public_key: accountLogIn.publicKey, + }); + // If there is a connection problem with the wallet, the user can cancel from the modal to skip the disconnect transaction. + // If not deleted, the access key will be reused during signIn. + await signAndSendTransactions([ + { + signerId: accountLogIn.accountId, + receiverId: accountLogIn.accountId, + actions: [ + { + type: "DeleteKey", + params: { + publicKey: accountLogIn.publicKey, + }, + }, + ], + }, + ]); + _state.keystore.removeKey(options.network.networkId, accountLogIn.accountId); + } + catch (error) { + logger.error(error); + } + } + try { + wagmiCore.disconnect(wagmiConfig); + } + catch (error) { + logger.error(error); + } + emitter.emit("signedOut", null); + cleanup(); + }; + return { + async signIn({ contractId, methodNames = [] }) { + logger.log("EthereumWallets:signIn", { contractId, methodNames }); + if (_state.isConnecting) { + throw new Error("SignIn request already received."); + } + try { + _state.isConnecting = true; + let unwatchAccountConnected; + let unsubscribeCloseModal; + let account = wagmiCore.getAccount(wagmiConfig); + let address = account.address?.toLowerCase(); + // Open web3Modal and wait for a wallet to be connected or for the web3Modal to be closed. + if (!address) { + try { + if (web3Modal) { + web3Modal.open(); + await (() => { + return new Promise((resolve, reject) => { + try { + unwatchAccountConnected = wagmiCore.watchAccount(wagmiConfig, { + onChange: (data) => { + if (!data.address) { + return; + } + resolve(data); + }, + }); + unsubscribeCloseModal = web3Modal.subscribeEvents((event) => { + const newAccount = wagmiCore.getAccount(wagmiConfig); + if (event.data.event === "MODAL_CLOSE" && + !newAccount.address) { + reject("Web3Modal closed without connecting to an Ethereum wallet."); + } + }); + } + catch (error) { + reject("User rejected"); + } + }); + })(); + } + else { + await wagmiCore.connect(wagmiConfig, { + connector: wagmiCore.injected(), + }); + } + account = wagmiCore.getAccount(wagmiConfig); + address = account.address?.toLowerCase(); + if (!address) { + throw new Error("Failed to get Ethereum wallet address"); + } + } + catch (error) { + logger.error(error); + throw new Error("Failed to connect Ethereum wallet."); + } + finally { + try { + // Prevent overshadowing the original exception + if (unwatchAccountConnected) { + unwatchAccountConnected(); + } + if (unsubscribeCloseModal) { + unsubscribeCloseModal(); + } + } + catch (error) { + logger.error(error); + } + } + } + else { + logger.log("Wallet already connected"); + } + await switchChain(); + // Login with FunctionCall access key, reuse keypair or create a new one. + const accountId = devMode ? address + "." + devModeAccount : address; + let publicKey; + if (contractId) { + const keyPair = await _state.keystore.getKey(options.network.networkId, accountId); + let reUseKeyPair = false; + if (keyPair) { + try { + await nearProvider.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: keyPair.getPublicKey().toString(), + }); + reUseKeyPair = true; + } + catch (error) { + logger.warn("Local access key cannot be reused."); + _state.keystore.removeKey(options.network.networkId, accountId); + } + } + if (reUseKeyPair) { + publicKey = keyPair.getPublicKey().toString(); + logger.log("Reusing existing publicKey:", publicKey); + } + else { + const newAccessKeyPair = nearAPI.utils.KeyPair.fromRandom("ed25519"); + publicKey = newAccessKeyPair.getPublicKey().toString(); + logger.log("Created new publicKey:", publicKey); + await signAndSendTransactions([ + { + signerId: accountId, + receiverId: accountId, + actions: [ + { + type: "AddKey", + params: { + publicKey, + accessKey: { + nonce: 0, + permission: { + receiverId: contractId, + allowance: DEFAULT_ACCESS_KEY_ALLOWANCE, + methodNames, + }, + }, + }, + }, + ], + }, + ]); + await _state.keystore.setKey(options.network.networkId, accountId, newAccessKeyPair); + } + } + else if (alwaysOnboardDuringSignIn) { + // Check onboarding status and onboard the relayer if needed. + await signAndSendTransactions([]); + } + const accountLogIn = { + accountId, + publicKey, + }; + emitter.emit("signedIn", { + contractId: contractId, + methodNames: methodNames ?? [], + accounts: [accountLogIn], + }); + if (!_state.subscriptions.length) { + setupEvents(); + } + _state.isConnecting = false; + try { + // Hide modal which stays open after adding a new network. + if (web3Modal) { + web3Modal.close(); + } + } + catch (error) { + logger.error(error); + } + return [accountLogIn]; + } + catch (error) { + _state.isConnecting = false; + try { + // Prevent overshadowing the original exception + // Disconnect to let user start again from the beginning: wallet selection. + wagmiCore.disconnect(wagmiConfig); + } + catch (err) { + logger.error(err); + } + throw error; + } + }, + signOut, + getAccounts, + async verifyOwner({ message }) { + logger.log("EthereumWallets:verifyOwner", { message }); + throw new Error("Not implemented: ed25519 N/A, '\x19Ethereum Signed Message:\n' prefix is not compatible, use personal_sign or eth_signTypedData_v4 instead."); + }, + async signMessage({ message, nonce, recipient }) { + logger.log("EthereumWallets:signMessage", { message, nonce, recipient }); + throw new Error("Not implemented: ed25519 N/A, '\x19Ethereum Signed Message:\n' prefix is not compatible, use personal_sign or eth_signTypedData_v4 instead."); + }, + async signAndSendTransaction(transaction) { + logger.log("EthereumWallets:signAndSendTransaction", transaction); + const outcomes = await signAndSendTransactions([transaction]); + // Return the last transaction outcome. + return outcomes[outcomes.length - 1]; + }, + async signAndSendTransactions({ transactions }) { + logger.log("EthereumWallets:signAndSendTransactions", { transactions }); + return await signAndSendTransactions(transactions); + }, + }; +}; +export function setupEthereumWallets(params) { + return async () => { + if (!wagmiCore) { + if (params.wagmiCore) { + wagmiCore = params.wagmiCore; + } + else { + await importWagmiCore(); + } + } + return { + id: "ethereum-wallets", + type: "injected", + metadata: { + name: "Ethereum Wallet", + description: "Ethereum wallets (EOA) on NEAR Protocol.", + iconUrl: params.iconUrl ?? icon, + deprecated: params.deprecated ?? false, + available: true, + downloadUrl: "", + }, + init: (config) => { + return EthereumWallets({ + ...config, + params, + }); + }, + }; + }; +} diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/modal.d.ts b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/modal.d.ts new file mode 100644 index 000000000..2d41e0fa3 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/modal.d.ts @@ -0,0 +1,24 @@ +import type { Transaction } from "@near-wallet-selector/core"; +import type { Chain } from "viem"; +export declare function createTxModal({ onCancel, txs, relayerPublicKey, explorerUrl, }: { + onCancel: () => void; + txs: Array; + relayerPublicKey: string; + explorerUrl: string; +}): { + showModal: () => void; + hideModal: () => void; + renderTxs: ({ selectedIndex, ethTxHashes, error, onConfirm, }: { + selectedIndex: number; + ethTxHashes: Array; + error?: string | null; + onConfirm?: () => void; + }) => void; +}; +export declare function createChainSwitchModal({ chain }: { + chain: Chain; +}): { + showModal: () => void; + hideModal: () => void; +}; +//# sourceMappingURL=modal.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/modal.d.ts.map b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/modal.d.ts.map new file mode 100644 index 000000000..a2790a430 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAIlC,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,GAAG,EACH,gBAAgB,EAChB,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;;;mEAqFI;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;KACxB;EA6PF;AAED,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE;;;EAyFjE"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/modal.js b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/modal.js new file mode 100644 index 000000000..a3e48ee82 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/modal.js @@ -0,0 +1,348 @@ +import { formatUnits } from "viem"; +import { DEFAULT_ACCESS_KEY_ALLOWANCE, RLP_EXECUTE } from "./utils"; +import { modalStyles } from "./styles"; +export function createTxModal({ onCancel, txs, relayerPublicKey, explorerUrl, }) { + // Create a style element and append the CSS styles + const styleElement = window.document.createElement("style"); + styleElement.textContent = modalStyles; + window.document.head.appendChild(styleElement); + // Container with display none/block + const modalContainer = window.document.createElement("div"); + modalContainer.classList.add("ethereum-wallet-modal"); + modalContainer.setAttribute("aria-labelledby", "modal-title"); + modalContainer.setAttribute("role", "dialog"); + modalContainer.setAttribute("aria-modal", "true"); + // Backdrop + const backdrop = window.document.createElement("div"); + backdrop.classList.add("ethereum-wallet-modal-backdrop"); + // Wrapper for modal + const modalWrapper = window.document.createElement("div"); + modalWrapper.classList.add("ethereum-wallet-modal-wrapper"); + // Modal content container + const modalContentContainer = window.document.createElement("div"); + modalContentContainer.classList.add("ethereum-wallet-modal-container"); + // Modal content + const isLogIn = txs.find((tx) => tx.actions[0].type === "AddKey"); + const isOnboard = txs.find((tx) => tx.actions[0].type === "AddKey" && + tx.actions[0].params.publicKey === relayerPublicKey); + const modalContent = window.document.createElement("div"); + modalContent.classList.add("ethereum-wallet-modal-content"); + modalContent.innerHTML = ` + ${txs.length === 1 && isLogIn + ? `

    ${isOnboard ? "Onboard" : "Log in"}

    ` + : txs.length === 1 && + txs[0].actions.length === 1 && + txs[0].actions[0].type === "DeleteKey" + ? "

    Log out

    " + : isLogIn + ? `

    Log in: send ${txs.length} transaction${txs.length > 1 ? "s" : ""}

    ` + : `

    Send ${txs.length} transaction${txs.length > 1 ? "s" : ""}

    `} +
    + + `; + // // Append the elements to form the complete structure + modalContentContainer.appendChild(modalContent); + modalWrapper.appendChild(modalContentContainer); + modalContainer.appendChild(backdrop); + modalContainer.appendChild(modalWrapper); + // Append modal container to document body + window.document.body.appendChild(modalContainer); + // Function to show the modal + const showModal = () => { + modalContainer.style.display = "block"; + }; + // Function to hide the modal + const hideModal = () => { + // modalContainer.style.display = "none"; + modalContainer.remove(); + }; + // On cancel button click + window.document + .querySelector(".ethereum-wallet-btn-cancel") + ?.addEventListener("click", () => { + onCancel(); + hideModal(); + }); + const renderTxs = ({ selectedIndex, ethTxHashes, error, onConfirm, }) => { + const container = document.querySelector(".ethereum-wallet-txs"); + container.innerHTML = ""; + txs.forEach((tx, i) => { + const txNumber = i + 1; + const singleTx = txs.length === 1; + const txElement = document.createElement("div"); + txElement.classList.add("ethereum-wallet-tx"); + if (singleTx) { + txElement.classList.add("ethereum-wallet-tx-single"); + } + const isCompleted = i < selectedIndex; + const isActive = i === selectedIndex; + const isPending = i > selectedIndex; + const isSent = selectedIndex < ethTxHashes.length; + const explorerLink = i < ethTxHashes.length + ? `${explorerUrl}/tx/${ethTxHashes[i]}` + : undefined; + if (!singleTx) { + if (isCompleted) { + txElement.classList.add("ethereum-wallet-tx-completed"); + } + if (isActive) { + txElement.classList.add("ethereum-wallet-tx-signing"); + } + if (isPending) { + txElement.classList.add("ethereum-wallet-tx-pending"); + } + } + txElement.innerHTML = ` + ${isCompleted + ? ` +
    +
    +

    Transaction ${txNumber}

    + ${explorerLink + ? ` + + + + ` + : ""} +
    + +
    + ` + : isPending + ? ` +
    +

    Transaction ${txNumber}

    + +
    + ` + : ` + ${!singleTx + ? ` +
    +

    Transaction ${txNumber}

    + +
    + ` + : ""} +
    + ${tx.actions[0].type === "AddKey" + ? tx.actions[0].params.accessKey.permission === "FullAccess" + ? ` +
    +

    WARNING: The application is requesting a FullAccess key. You can lose your account and all your assets. Only approve this transaction if you know what you are doing!

    +

    ` + : tx.actions[0].params.accessKey.permission.allowance === + "0" && + tx.actions[0].params.publicKey === relayerPublicKey && + tx.actions[0].params.accessKey.permission.receiverId === + tx.signerId && + tx.actions[0].params.accessKey.permission.methodNames + ?.length === 1 && + tx.actions[0].params.accessKey.permission + .methodNames[0] === RLP_EXECUTE + ? ` +
    +

    This one-time transaction will onboard your account and enable you to transact on NEAR Protocol.

    +
    ` + : ` +
    +

    Connect to ${tx.actions[0].params.accessKey.permission.receiverId}

    +

    + Network Fee Allowance: ${tx.actions[0].params.accessKey.permission + .allowance === "0" + ? "unlimited" + : formatUnits(BigInt(tx.actions[0].params.accessKey.permission + .allowance ?? DEFAULT_ACCESS_KEY_ALLOWANCE), 24)} NEAR +

    + ${tx.actions[0].params.accessKey.permission + .allowance === "0" + ? "

    WARNING: this key will have unlimited allowance spendable towards network fees, only approve this transaction if you trust the application and you know what you are doing!

    " + : "

    This allowance is spendable by the application towards network fees incurred during use.

    "} +
    + ` + : tx.actions[0].type === "DeleteKey" + ? ` +
    +

    This is an optional transaction which removes the application access key. If you reject the transaction, the key will be reused when you login next time.

    +
    + ` + : tx.actions[0].type === "FunctionCall" + ? ` +
    +
    +
    From
    +
    ${tx.signerId}
    +
    +
    +
    To
    +
    ${tx.receiverId}
    +
    +
    +
    Type
    +
    ${tx.actions[0].params.methodName}
    +
    + ${tx.actions[0].params.deposit === "1" || + tx.actions[0].params.deposit === "0" + ? "" + : ` +
    +
    Deposit
    +
    ${formatUnits(BigInt(tx.actions[0].params.deposit), 24)} NEAR
    +
    + `} +
    + ` + : tx.actions[0].type === "Transfer" + ? ` +
    +
    +
    From
    +
    ${tx.signerId}
    +
    +
    +
    To
    +
    ${tx.receiverId}
    +
    +
    +
    Type
    +
    ${tx.actions[0].type}
    +
    +
    +
    Amount
    +
    ${formatUnits(BigInt(tx.actions[0].params.deposit), 24)} NEAR
    +
    +
    + ` + : ` +
    +

    Unknown transaction type.

    +
    + `} +
    + +
    +

    ${JSON.stringify(tx.actions[0], null, 2)}

    +
    + ${error ? `

    ${error}

    ` : ""} + ${onConfirm + ? `` + : `
    +

    + ${isSent + ? "Sending transaction" + : "Confirm in your wallet"} +

    +
    +
    `} + `} + `; + container.appendChild(txElement); + }); + if (onConfirm) { + window.document + .querySelector(`#confirm-btn-${selectedIndex}`) + ?.addEventListener("click", () => { + onConfirm(); + }); + } + const toggleButton = window.document.querySelector(".ethereum-wallet-btn-details"); + const detailsContainer = window.document.querySelector(".ethereum-wallet-txs-details"); + toggleButton?.addEventListener("click", () => { + if (!detailsContainer || !toggleButton) { + return; + } + if (detailsContainer.style.display === "none" || + detailsContainer.style.display === "") { + detailsContainer.style.display = "block"; + toggleButton.textContent = "Hide details"; + } + else { + detailsContainer.style.display = "none"; + toggleButton.textContent = "Show details"; + } + }); + }; + return { showModal, hideModal, renderTxs }; +} +export function createChainSwitchModal({ chain }) { + // Create a style element and append the CSS styles + const styleElement = window.document.createElement("style"); + styleElement.textContent = modalStyles; + window.document.head.appendChild(styleElement); + // Container with display none/block + const modalContainer = window.document.createElement("div"); + modalContainer.classList.add("ethereum-wallet-modal"); + modalContainer.setAttribute("aria-labelledby", "modal-title"); + modalContainer.setAttribute("role", "dialog"); + modalContainer.setAttribute("aria-modal", "true"); + // Backdrop + const backdrop = window.document.createElement("div"); + backdrop.classList.add("ethereum-wallet-modal-backdrop"); + // Wrapper for modal + const modalWrapper = window.document.createElement("div"); + modalWrapper.classList.add("ethereum-wallet-modal-wrapper"); + // Modal content container + const modalContentContainer = window.document.createElement("div"); + modalContentContainer.classList.add("ethereum-wallet-modal-container"); + // Modal content + const modalContent = window.document.createElement("div"); + modalContent.classList.add("ethereum-wallet-modal-content"); + modalContent.innerHTML = ` +

    Switch Network

    +
    +
    +

    Please approve the switch network request in your wallet.

    +

    If you experience problems connecting you may need to add the network manually from your wallet settings and try again.

    +
    +
    +
    +
    Network Name
    +
    ${chain.name}
    +
    +
    +
    RPC URL
    +
    ${chain.rpcUrls.default.http[0]}
    +
    +
    +
    Chain ID
    +
    ${chain.id}
    +
    +
    +
    Symbol
    +
    ${chain.nativeCurrency.symbol}
    +
    +
    +
    Block Explorer URL
    +
    ${chain.blockExplorers?.default.url}
    +
    +
    +
    + + `; + // // Append the elements to form the complete structure + modalContentContainer.appendChild(modalContent); + modalWrapper.appendChild(modalContentContainer); + modalContainer.appendChild(backdrop); + modalContainer.appendChild(modalWrapper); + // Append modal container to document body + window.document.body.appendChild(modalContainer); + // Function to show the modal + const showModal = () => { + modalContainer.style.display = "block"; + }; + // Function to hide the modal + const hideModal = () => { + // modalContainer.style.display = "none"; + modalContainer.remove(); + }; + // On cancel button click + window.document + .querySelector(".ethereum-wallet-btn-cancel") + ?.addEventListener("click", () => { + hideModal(); + }); + return { showModal, hideModal }; +} diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/styles.d.ts b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/styles.d.ts new file mode 100644 index 000000000..12a9d56c3 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/styles.d.ts @@ -0,0 +1,2 @@ +export declare const modalStyles = "\n .ethereum-wallet-modal *,\n .ethereum-wallet-modal *::before,\n .ethereum-wallet-modal *::after {\n box-sizing: border-box;\n }\n .ethereum-wallet-modal button {\n cursor: pointer;\n top: auto;\n }\n .ethereum-wallet-modal button:hover {\n top: auto;\n }\n .ethereum-wallet-modal button:focus-visible {\n top: auto;\n }\n\n .ethereum-wallet-modal dt {\n flex-shrink: 0;\n margin: 0;\n font-size: 14px;\n line-height: 20px;\n color: #202020;\n font-weight: 500;\n }\n .ethereum-wallet-modal dd {\n margin: 0;\n font-size: 14px;\n line-height: 20px;\n color: #202020;\n font-weight: 700;\n text-align: right;\n word-break: break-all;\n overflow-wrap: break-word;\n }\n\n .ethereum-wallet-modal {\n display: none;\n position: relative;\n z-index: 9999;\n }\n .ethereum-wallet-modal-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n }\n .ethereum-wallet-modal-wrapper {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n width: 100vw;\n overflow-y: auto;\n }\n .ethereum-wallet-modal-container {\n display: flex;\n min-height: 100%;\n align-items: center;\n justify-content: center;\n padding: 1rem;\n text-align: center;\n }\n .ethereum-wallet-modal-content {\n position: relative;\n overflow: hidden;\n border-radius: 1rem;\n background-color: #fff;\n padding: 20px;\n text-align: left;\n max-width: 400px;\n width: 100%;\n box-shadow:\n 0px 4px 8px rgba(0, 0, 0, 0.06),\n 0px 0px 0px 1px rgba(0, 0, 0, 0.06);\n }\n\n .ethereum-wallet-modal h2 {\n font-weight: 700;\n font-size: 24px;\n line-height: 30px;\n text-align: center;\n letter-spacing: -0.1px;\n color: #202020;\n margin: 0;\n }\n\n .ethereum-wallet-txs {\n margin: 20px 0 10px 0;\n display: flex;\n flex-direction: column;\n row-gap: 8px;\n }\n\n .ethereum-wallet-tx {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n .ethereum-wallet-tx:not(.ethereum-wallet-tx-single) {\n padding: 0 10px;\n }\n .ethereum-wallet-tx-list-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 10px;\n width: 100%;\n }\n .ethereum-wallet-tx-list-header p {\n margin: 0;\n font-size: 14px;\n line-height: 20px;\n color: #202020;\n font-weight: 700;\n }\n .ethereum-wallet-tx-list-header svg {\n height: 24px;\n width: 24px;\n }\n\n .ethereum-wallet-tx-explorer-link {\n height: 24px;\n width: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n }\n .ethereum-wallet-tx-explorer-link:hover {\n background-color: #DDF3E4;\n }\n .ethereum-wallet-tx-explorer-link svg {\n height: 16px;\n width: 16px;\n color: #202020;\n }\n\n .ethereum-wallet-tx.ethereum-wallet-tx-signing {\n background-color: #F9F9F9;\n padding-bottom: 10px;\n border-radius: 8px;\n }\n .ethereum-wallet-tx.ethereum-wallet-tx-pending {\n background-color: #F9F9F9;\n border-radius: 8px;\n }\n .ethereum-wallet-tx.ethereum-wallet-tx-completed {\n background-color: #F2FCF5;\n border-radius: 8px;\n }\n\n .ethereum-wallet-tx-single .ethereum-wallet-tx-info-container {\n border-top: 1px solid #EBEBEB;\n border-bottom: 1px solid #EBEBEB;\n }\n .ethereum-wallet-tx-info-text > p {\n color: #646464;\n margin: 0;\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.04px;\n }\n .ethereum-wallet-tx-info-text > p:not(:last-child) {\n margin-bottom: 8px;\n }\n\n .ethereum-wallet-tx-info-row {\n padding: 14px 10px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n column-gap: 20px;\n }\n .ethereum-wallet-tx-info-col {\n padding: 14px 10px;\n display: flex;\n flex-direction: column;\n justify-content: start;\n row-gap: 4px;\n align-items: start;\n }\n .ethereum-wallet-tx-info-text {\n padding: 10px;\n }\n .ethereum-wallet-tx-params,\n .ethereum-wallet-tx-params dl {\n margin: 0;\n }\n .ethereum-wallet-tx .ethereum-wallet-tx-params {\n border-top: 1px solid #EBEBEB;\n border-bottom: 1px solid #EBEBEB;\n }\n .ethereum-wallet-tx-params div:not(:last-child) {\n border-bottom: 1px solid #EBEBEB;\n }\n\n .ethereum-wallet-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n color: #1C2024;\n border: 1px solid rgba(1, 6, 47, 0.173) !important;\n background-color: #fff !important;\n padding: 14px;\n font-size: 14px;\n line-height: 20px;\n font-weight: 700;\n }\n .ethereum-wallet-btn:hover {\n border: 1px solid rgba(1, 6, 47, 0.173);\n background-color: #F2F2F5 !important;\n }\n .ethereum-wallet-btn:focus-visible {\n outline: 2px solid;\n outline-offset: 2px;\n outline-color: #8B8D98;\n border: 1px solid rgba(1, 6, 47, 0.173);\n }\n .ethereum-wallet-btn-sm {\n padding: 10px 14px;\n font-size: 12px;\n line-height: 16px;\n }\n .ethereum-wallet-btn-xs {\n padding: 8px 12px;\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.04px;\n border-radius: 9999px;\n }\n .ethereum-wallet-btn-confirm {\n width: 100%;\n margin-top: 24px;\n }\n .ethereum-wallet-btn-cancel {\n width: 100%;\n background-color: #FFF9F9 !important;\n color: #dc2626 !important;\n border: 1px solid #fecaca !important;\n }\n .ethereum-wallet-btn-cancel:hover {\n background-color: #fef2f2 !important;\n }\n .ethereum-wallet-btn-details {\n margin-top: 20px;\n border-radius: 9999px;\n }\n\n .ethereum-wallet-tx-error {\n font-size: 14px;\n line-height: 20px;\n color: #dc2626;\n font-weight: 700;\n text-align: center;\n text-wrap: balance;\n margin-top: 20px;\n margin-bottom: 0px;\n }\n\n .ethereum-wallet-txs-details {\n display: none;\n margin-top: 10px;\n padding: 10px;\n background: #F1F1F1;\n border-radius: 8px;\n width: 100%;\n max-width: 100%;\n overflow: auto;\n }\n .ethereum-wallet-txs-details p {\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.04px;\n color: #646464;\n word-wrap: break-word;\n overflow-wrap: break-word;\n white-space: pre-wrap;\n margin: 0;\n }\n\n .ethereum-wallet-txs-status {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 14px;\n background: #F1F4FE;\n border-radius: 8px;\n width: 100%;\n margin-top: 24px;\n border: 1px solid rgba(0,0,0,0);\n }\n .ethereum-wallet-txs-status p {\n margin: 0;\n color: #384EAC;\n font-weight: 700;\n font-size: 14px;\n line-height: 20px;\n }\n\n .ethereum-wallet-tx-highlight {\n position: relative;\n z-index: 1;\n }\n .ethereum-wallet-tx-highlight::before {\n content: \"\";\n position: absolute;\n top: -4px;\n left: -6px;\n right: -6px;\n bottom: -4px;\n z-index: -1;\n background-color: #DDF3E4;\n border-radius: 8px;\n }\n\n .ethereum-wallet-spinner {\n position: absolute;\n right: 14px;\n top: 16px;\n width: 16px;\n height: 16px;\n border: 2px solid #384EAC;\n border-bottom-color: transparent;\n border-radius: 50%;\n animation: rotation 1s linear infinite;\n }\n @keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n"; +//# sourceMappingURL=styles.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/styles.d.ts.map b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/styles.d.ts.map new file mode 100644 index 000000000..af3fae78d --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/styles.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/lib/styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,olPAwVvB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/styles.js b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/styles.js new file mode 100644 index 000000000..91fc762e1 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/styles.js @@ -0,0 +1,345 @@ +export const modalStyles = ` + .ethereum-wallet-modal *, + .ethereum-wallet-modal *::before, + .ethereum-wallet-modal *::after { + box-sizing: border-box; + } + .ethereum-wallet-modal button { + cursor: pointer; + top: auto; + } + .ethereum-wallet-modal button:hover { + top: auto; + } + .ethereum-wallet-modal button:focus-visible { + top: auto; + } + + .ethereum-wallet-modal dt { + flex-shrink: 0; + margin: 0; + font-size: 14px; + line-height: 20px; + color: #202020; + font-weight: 500; + } + .ethereum-wallet-modal dd { + margin: 0; + font-size: 14px; + line-height: 20px; + color: #202020; + font-weight: 700; + text-align: right; + word-break: break-all; + overflow-wrap: break-word; + } + + .ethereum-wallet-modal { + display: none; + position: relative; + z-index: 9999; + } + .ethereum-wallet-modal-backdrop { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.5); + } + .ethereum-wallet-modal-wrapper { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100vw; + overflow-y: auto; + } + .ethereum-wallet-modal-container { + display: flex; + min-height: 100%; + align-items: center; + justify-content: center; + padding: 1rem; + text-align: center; + } + .ethereum-wallet-modal-content { + position: relative; + overflow: hidden; + border-radius: 1rem; + background-color: #fff; + padding: 20px; + text-align: left; + max-width: 400px; + width: 100%; + box-shadow: + 0px 4px 8px rgba(0, 0, 0, 0.06), + 0px 0px 0px 1px rgba(0, 0, 0, 0.06); + } + + .ethereum-wallet-modal h2 { + font-weight: 700; + font-size: 24px; + line-height: 30px; + text-align: center; + letter-spacing: -0.1px; + color: #202020; + margin: 0; + } + + .ethereum-wallet-txs { + margin: 20px 0 10px 0; + display: flex; + flex-direction: column; + row-gap: 8px; + } + + .ethereum-wallet-tx { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + .ethereum-wallet-tx:not(.ethereum-wallet-tx-single) { + padding: 0 10px; + } + .ethereum-wallet-tx-list-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 12px 10px; + width: 100%; + } + .ethereum-wallet-tx-list-header p { + margin: 0; + font-size: 14px; + line-height: 20px; + color: #202020; + font-weight: 700; + } + .ethereum-wallet-tx-list-header svg { + height: 24px; + width: 24px; + } + + .ethereum-wallet-tx-explorer-link { + height: 24px; + width: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 6px; + } + .ethereum-wallet-tx-explorer-link:hover { + background-color: #DDF3E4; + } + .ethereum-wallet-tx-explorer-link svg { + height: 16px; + width: 16px; + color: #202020; + } + + .ethereum-wallet-tx.ethereum-wallet-tx-signing { + background-color: #F9F9F9; + padding-bottom: 10px; + border-radius: 8px; + } + .ethereum-wallet-tx.ethereum-wallet-tx-pending { + background-color: #F9F9F9; + border-radius: 8px; + } + .ethereum-wallet-tx.ethereum-wallet-tx-completed { + background-color: #F2FCF5; + border-radius: 8px; + } + + .ethereum-wallet-tx-single .ethereum-wallet-tx-info-container { + border-top: 1px solid #EBEBEB; + border-bottom: 1px solid #EBEBEB; + } + .ethereum-wallet-tx-info-text > p { + color: #646464; + margin: 0; + font-weight: 500; + font-size: 12px; + line-height: 16px; + letter-spacing: 0.04px; + } + .ethereum-wallet-tx-info-text > p:not(:last-child) { + margin-bottom: 8px; + } + + .ethereum-wallet-tx-info-row { + padding: 14px 10px; + display: flex; + flex-direction: row; + justify-content: space-between; + column-gap: 20px; + } + .ethereum-wallet-tx-info-col { + padding: 14px 10px; + display: flex; + flex-direction: column; + justify-content: start; + row-gap: 4px; + align-items: start; + } + .ethereum-wallet-tx-info-text { + padding: 10px; + } + .ethereum-wallet-tx-params, + .ethereum-wallet-tx-params dl { + margin: 0; + } + .ethereum-wallet-tx .ethereum-wallet-tx-params { + border-top: 1px solid #EBEBEB; + border-bottom: 1px solid #EBEBEB; + } + .ethereum-wallet-tx-params div:not(:last-child) { + border-bottom: 1px solid #EBEBEB; + } + + .ethereum-wallet-btn { + display: flex; + align-items: center; + justify-content: center; + border-radius: 8px; + color: #1C2024; + border: 1px solid rgba(1, 6, 47, 0.173) !important; + background-color: #fff !important; + padding: 14px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + } + .ethereum-wallet-btn:hover { + border: 1px solid rgba(1, 6, 47, 0.173); + background-color: #F2F2F5 !important; + } + .ethereum-wallet-btn:focus-visible { + outline: 2px solid; + outline-offset: 2px; + outline-color: #8B8D98; + border: 1px solid rgba(1, 6, 47, 0.173); + } + .ethereum-wallet-btn-sm { + padding: 10px 14px; + font-size: 12px; + line-height: 16px; + } + .ethereum-wallet-btn-xs { + padding: 8px 12px; + font-weight: 500; + font-size: 12px; + line-height: 16px; + letter-spacing: 0.04px; + border-radius: 9999px; + } + .ethereum-wallet-btn-confirm { + width: 100%; + margin-top: 24px; + } + .ethereum-wallet-btn-cancel { + width: 100%; + background-color: #FFF9F9 !important; + color: #dc2626 !important; + border: 1px solid #fecaca !important; + } + .ethereum-wallet-btn-cancel:hover { + background-color: #fef2f2 !important; + } + .ethereum-wallet-btn-details { + margin-top: 20px; + border-radius: 9999px; + } + + .ethereum-wallet-tx-error { + font-size: 14px; + line-height: 20px; + color: #dc2626; + font-weight: 700; + text-align: center; + text-wrap: balance; + margin-top: 20px; + margin-bottom: 0px; + } + + .ethereum-wallet-txs-details { + display: none; + margin-top: 10px; + padding: 10px; + background: #F1F1F1; + border-radius: 8px; + width: 100%; + max-width: 100%; + overflow: auto; + } + .ethereum-wallet-txs-details p { + font-weight: 500; + font-size: 12px; + line-height: 16px; + letter-spacing: 0.04px; + color: #646464; + word-wrap: break-word; + overflow-wrap: break-word; + white-space: pre-wrap; + margin: 0; + } + + .ethereum-wallet-txs-status { + position: relative; + display: flex; + justify-content: center; + align-items: center; + padding: 14px; + background: #F1F4FE; + border-radius: 8px; + width: 100%; + margin-top: 24px; + border: 1px solid rgba(0,0,0,0); + } + .ethereum-wallet-txs-status p { + margin: 0; + color: #384EAC; + font-weight: 700; + font-size: 14px; + line-height: 20px; + } + + .ethereum-wallet-tx-highlight { + position: relative; + z-index: 1; + } + .ethereum-wallet-tx-highlight::before { + content: ""; + position: absolute; + top: -4px; + left: -6px; + right: -6px; + bottom: -4px; + z-index: -1; + background-color: #DDF3E4; + border-radius: 8px; + } + + .ethereum-wallet-spinner { + position: absolute; + right: 14px; + top: 16px; + width: 16px; + height: 16px; + border: 2px solid #384EAC; + border-bottom-color: transparent; + border-radius: 50%; + animation: rotation 1s linear infinite; + } + @keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } +`; diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/utils.d.ts b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/utils.d.ts new file mode 100644 index 000000000..a9eeada49 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/utils.d.ts @@ -0,0 +1,82 @@ +export declare const ETHEREUM_ACCOUNT_ABI: readonly [{ + readonly name: "functionCall"; + readonly type: "function"; + readonly stateMutability: "payable"; + readonly inputs: readonly [{ + readonly type: "string"; + readonly name: "receiver_id"; + }, { + readonly type: "string"; + readonly name: "method_name"; + }, { + readonly type: "bytes"; + readonly name: "args"; + }, { + readonly type: "uint64"; + readonly name: "gas"; + }, { + readonly type: "uint32"; + readonly name: "yoctoNear"; + }]; + readonly outputs: readonly []; +}, { + readonly name: "transfer"; + readonly type: "function"; + readonly stateMutability: "payable"; + readonly inputs: readonly [{ + readonly type: "string"; + readonly name: "receiver_id"; + }, { + readonly type: "uint32"; + readonly name: "yoctoNear"; + }]; + readonly outputs: readonly []; +}, { + readonly name: "addKey"; + readonly type: "function"; + readonly stateMutability: "nonpayable"; + readonly inputs: readonly [{ + readonly type: "uint8"; + readonly name: "public_key_kind"; + }, { + readonly type: "bytes"; + readonly name: "public_key"; + }, { + readonly type: "uint64"; + readonly name: "nonce"; + }, { + readonly type: "bool"; + readonly name: "is_full_access"; + }, { + readonly type: "bool"; + readonly name: "is_limited_allowance"; + }, { + readonly type: "uint128"; + readonly name: "allowance"; + }, { + readonly type: "string"; + readonly name: "receiver_id"; + }, { + readonly type: "string[]"; + readonly name: "method_names"; + }]; + readonly outputs: readonly []; +}, { + readonly name: "deleteKey"; + readonly type: "function"; + readonly stateMutability: "nonpayable"; + readonly inputs: readonly [{ + readonly type: "uint8"; + readonly name: "public_key_kind"; + }, { + readonly type: "bytes"; + readonly name: "public_key"; + }]; + readonly outputs: readonly []; +}]; +export declare const DEFAULT_ACCESS_KEY_ALLOWANCE = "250000000000000000000000"; +export declare const RLP_EXECUTE = "rlp_execute"; +export declare const MAX_TGAS: bigint; +export declare class EthTxError extends Error { +} +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/utils.d.ts.map b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/utils.d.ts.map new file mode 100644 index 000000000..7c2956f50 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/lib/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B,CAAC;AACH,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,QAAQ,QAAiB,CAAC;AACvC,qBAAa,UAAW,SAAQ,KAAK;CAAG"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/utils.js b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/utils.js new file mode 100644 index 000000000..d578abe6d --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/ethereum-wallets/src/lib/utils.js @@ -0,0 +1,12 @@ +import { parseAbi } from "viem"; +export const ETHEREUM_ACCOUNT_ABI = parseAbi([ + "function functionCall(string receiver_id, string method_name, bytes args, uint64 gas, uint32 yoctoNear) payable", + "function transfer(string receiver_id, uint32 yoctoNear) payable", + "function addKey(uint8 public_key_kind, bytes public_key, uint64 nonce, bool is_full_access, bool is_limited_allowance, uint128 allowance, string receiver_id, string[] method_names) external", + "function deleteKey(uint8 public_key_kind, bytes public_key) external", +]); +export const DEFAULT_ACCESS_KEY_ALLOWANCE = "250000000000000000000000"; // 0.25 NEAR +export const RLP_EXECUTE = "rlp_execute"; +export const MAX_TGAS = BigInt(270e12); // Handle overhead of rlp_execute to validate the Ethereum transaction. +export class EthTxError extends Error { +} diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/index.d.ts b/packages/ethereum-wallets/dist/esm/wallet-utils/src/index.d.ts new file mode 100644 index 000000000..9b70859cc --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/index.d.ts @@ -0,0 +1,2 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/index.d.ts.map b/packages/ethereum-wallets/dist/esm/wallet-utils/src/index.d.ts.map new file mode 100644 index 000000000..0d9c8c9c2 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../wallet-utils/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/index.js b/packages/ethereum-wallets/dist/esm/wallet-utils/src/index.js new file mode 100644 index 000000000..27b22f6ee --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/index.js @@ -0,0 +1 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/create-action.d.ts b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/create-action.d.ts new file mode 100644 index 000000000..da65b4629 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/create-action.d.ts @@ -0,0 +1,4 @@ +import * as nearAPI from "near-api-js"; +import type { Action } from "@near-wallet-selector/core"; +export declare const createAction: (action: Action) => nearAPI.transactions.Action; +//# sourceMappingURL=create-action.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/create-action.d.ts.map b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/create-action.d.ts.map new file mode 100644 index 000000000..fe8487b52 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/create-action.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"create-action.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/create-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgB3E,eAAO,MAAM,YAAY,WAAY,MAAM,gCAqD1C,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/create-action.js b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/create-action.js new file mode 100644 index 000000000..d49ee0465 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/create-action.js @@ -0,0 +1,51 @@ +import * as nearAPI from "near-api-js"; +const { transactions, utils } = nearAPI; +const getAccessKey = (permission) => { + if (permission === "FullAccess") { + return transactions.fullAccessKey(); + } + const { receiverId, methodNames = [] } = permission; + const allowance = permission.allowance + ? BigInt(permission.allowance) + : undefined; + return transactions.functionCallAccessKey(receiverId, methodNames, allowance); +}; +export const createAction = (action) => { + switch (action.type) { + case "CreateAccount": + return transactions.createAccount(); + case "DeployContract": { + const { code } = action.params; + return transactions.deployContract(code); + } + case "FunctionCall": { + const { methodName, args, gas, deposit } = action.params; + console.log('alohaws action', action); + return transactions.functionCall(methodName, args, BigInt(gas), BigInt(deposit)); + } + case "Transfer": { + const { deposit } = action.params; + return transactions.transfer(BigInt(deposit)); + } + case "Stake": { + const { stake, publicKey } = action.params; + return transactions.stake(BigInt(stake), utils.PublicKey.from(publicKey)); + } + case "AddKey": { + const { publicKey, accessKey } = action.params; + return transactions.addKey(utils.PublicKey.from(publicKey), + // TODO: Use accessKey.nonce? near-api-js seems to think 0 is fine? + getAccessKey(accessKey.permission)); + } + case "DeleteKey": { + const { publicKey } = action.params; + return transactions.deleteKey(utils.PublicKey.from(publicKey)); + } + case "DeleteAccount": { + const { beneficiaryId } = action.params; + return transactions.deleteAccount(beneficiaryId); + } + default: + throw new Error("Invalid action type"); + } +}; diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts new file mode 100644 index 000000000..fd0b85445 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts @@ -0,0 +1,5 @@ +import type { Signer } from "@near-js/signers"; +import type { SignedTransaction } from "@near-js/transactions"; +import type { Network, Transaction } from "@near-wallet-selector/core/src"; +export declare const signTransactions: (transactions: Array, signer: Signer, network: Network) => Promise; +//# sourceMappingURL=sign-transactions.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map new file mode 100644 index 000000000..9624b4968 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sign-transactions.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/sign-transactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAIzE,eAAO,MAAM,gBAAgB,iBACb,KAAK,CAAC,WAAW,CAAC,UACxB,MAAM,WACL,OAAO,iCAoDjB,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/sign-transactions.js b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/sign-transactions.js new file mode 100644 index 000000000..d7d30548c --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/sign-transactions.js @@ -0,0 +1,34 @@ +import { KeyType, PublicKey } from "@near-js/crypto"; +import { createTransaction, signTransaction } from "@near-js/transactions"; +import { baseDecode } from "@near-js/utils"; +// import * as nearAPI from "near-api-js"; +import { JsonRpcProvider } from "@near-js/providers"; +import { createAction } from "./create-action"; +export const signTransactions = async (transactions, signer, network) => { + const provider = new JsonRpcProvider({ + url: network.nodeUrl, + }); + const signedTransactions = []; + for (let i = 0; i < transactions.length; i++) { + const publicKey = await signer.getPublicKey(transactions[i].signerId, network.networkId); + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transactions[i].signerId, + public_key: publicKey.toString(), + }), + ]); + const actions = transactions[i].actions.map((action) => createAction(action)); + const transaction = createTransaction(transactions[i].signerId, new PublicKey({ + keyType: KeyType.ED25519, + data: publicKey.data + }), + // PublicKey.from(publicKey.toString()), + transactions[i].receiverId, accessKey.nonce + i + 1, actions, baseDecode(block.header.hash)); + const response = await signTransaction(transaction, signer, transactions[i].signerId, network.networkId); + signedTransactions.push(response[1]); + } + return signedTransactions; +}; diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts new file mode 100644 index 000000000..ca97d2268 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts @@ -0,0 +1,4 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; +//# sourceMappingURL=wallet-utils.d.ts.map \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map new file mode 100644 index 000000000..209167ee4 --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/wallet-utils.js b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/wallet-utils.js new file mode 100644 index 000000000..d5a53e83f --- /dev/null +++ b/packages/ethereum-wallets/dist/esm/wallet-utils/src/lib/wallet-utils.js @@ -0,0 +1,3 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; diff --git a/packages/ethereum-wallets/jest.config.ts b/packages/ethereum-wallets/jest.config.ts index 52616e6e6..8480fe233 100644 --- a/packages/ethereum-wallets/jest.config.ts +++ b/packages/ethereum-wallets/jest.config.ts @@ -7,7 +7,7 @@ export default { "^.+\\.[tj]s$": [ "ts-jest", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", }, ], }, diff --git a/packages/ethereum-wallets/package.json b/packages/ethereum-wallets/package.json index f11e43cf3..66f18d5bb 100644 --- a/packages/ethereum-wallets/package.json +++ b/packages/ethereum-wallets/package.json @@ -2,6 +2,42 @@ "name": "@near-wallet-selector/ethereum-wallets", "version": "8.9.13", "description": "Ethereum wallets package for NEAR Wallet Selector.", + "scripts": { + "compile:esm": "tsc -p tsconfig.esm.json", + "compile:cjs": "tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/index.d.ts", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "type": "module", + "dependencies": { + "@near-js/providers": "*", + "@near-js/transactions": "*", + "@near-js/utils": "*", + "@near-wallet-selector/wallet-utils": "workspace:*", + "@wagmi/core": "*", + "bs58": "*", + "near-api-js": "*", + "viem": "*", + "wagmi": "*" + }, + "devDependencies": { + "@near-js/types": "*", + "@types/node": "*", + "rimraf": "*", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js" + } + }, "keywords": [ "near", "blockchain", @@ -22,8 +58,5 @@ "bugs": { "url": "https://github.com/near/wallet-selector/issues" }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/ethereum-wallets", - "peerDependencies": { - "near-api-js": "^1.0.0 || ^2.0.0" - } + "homepage": "https://github.com/near/wallet-selector/tree/main/packages/ethereum-wallets" } diff --git a/packages/ethereum-wallets/project.json b/packages/ethereum-wallets/project.json deleted file mode 100644 index af2852b01..000000000 --- a/packages/ethereum-wallets/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "ethereum-wallets", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/ethereum-wallets/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/ethereum-wallets", - "tsConfig": "packages/ethereum-wallets/tsconfig.lib.json", - "project": "packages/ethereum-wallets/package.json", - "entryFile": "packages/ethereum-wallets/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/ethereum-wallets/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/ethereum-wallets/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/ethereum-wallets/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/ethereum-wallets"], - "options": { - "jestConfig": "packages/ethereum-wallets/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/ethereum-wallets/src/lib/index.ts b/packages/ethereum-wallets/src/lib/index.ts index 92efa1fec..626efea17 100644 --- a/packages/ethereum-wallets/src/lib/index.ts +++ b/packages/ethereum-wallets/src/lib/index.ts @@ -1,13 +1,8 @@ import * as nearAPI from "near-api-js"; -import type { - AccessKeyViewRaw, - ExecutionStatus, - FinalExecutionOutcome, - FunctionCallPermissionView, -} from "near-api-js/lib/providers/provider"; -import { JsonRpcProvider } from "near-api-js/lib/providers"; -import { stringifyJsonOrBytes } from "near-api-js/lib/transaction"; -import { parseRpcError } from "near-api-js/lib/utils/rpc_errors"; +import type { AccessKeyViewRaw, ExecutionStatus, FinalExecutionOutcome, FunctionCallPermissionView, } from "@near-js/types"; +import { JsonRpcProvider } from "@near-js/providers"; +import { stringifyJsonOrBytes } from "@near-js/transactions"; +import { parseRpcError } from "@near-js/utils"; import { type WalletModuleFactory, type WalletBehaviourFactory, @@ -171,8 +166,27 @@ const EthereumWallets: WalletBehaviourFactory< ? tx.receiverId : "0x" + keccak256(toHex(tx.receiverId)).slice(26) ) as `0x${string}`; + // Created this defaults variable during the process + // of getting wallet selector packages and near-js packages + // working smoothly on LTS node version. + // Feel free to update/remove/whatever + let ethTxDefaults: WriteContractParameters = { + abi: [], + functionName: "", + address: `0x`, + chain: undefined, + account: `0x` + }; let ethTx: WriteContractParameters; switch (tx.actions[0].type) { + case "CreateAccount": + break; + case "DeployContract": + break; + case "Stake": + break; + case "DeleteAccount": + break; case "AddKey": { const publicKey = bytesToHex( bs58.decode(tx.actions[0].params.publicKey.split(":")[1]) @@ -191,6 +205,8 @@ const EthereumWallets: WalletBehaviourFactory< ethTx = { abi: ETHEREUM_ACCOUNT_ABI, address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, functionName: "addKey", args, chainId: expectedChainId, @@ -215,6 +231,8 @@ const EthereumWallets: WalletBehaviourFactory< ethTx = { abi: ETHEREUM_ACCOUNT_ABI, address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, functionName: "addKey", args, gasPrice: @@ -228,6 +246,7 @@ const EthereumWallets: WalletBehaviourFactory< : undefined, chainId: expectedChainId, type: "legacy", + // uhhh }; } break; @@ -243,6 +262,8 @@ const EthereumWallets: WalletBehaviourFactory< ethTx = { abi: ETHEREUM_ACCOUNT_ABI, address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, functionName: "deleteKey", args, chainId: expectedChainId, @@ -265,6 +286,8 @@ const EthereumWallets: WalletBehaviourFactory< ethTx = { abi: ETHEREUM_ACCOUNT_ABI, address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, functionName: "functionCall", args, value, @@ -280,6 +303,8 @@ const EthereumWallets: WalletBehaviourFactory< ethTx = { abi: ETHEREUM_ACCOUNT_ABI, address: to, + account: ethTxDefaults.account, + chain: ethTxDefaults.chain, functionName: "transfer", args, value, @@ -674,7 +699,7 @@ const EthereumWallets: WalletBehaviourFactory< try { await new Promise((r) => setTimeout(r, 1000)); nearTx = await nearProvider.txStatus( - // @ts-expect-error + /* // @ts-expect-error */ receipt.nearTransactionHash, accountLogIn.accountId ); diff --git a/packages/ethereum-wallets/tsconfig.cjs.json b/packages/ethereum-wallets/tsconfig.cjs.json new file mode 100644 index 000000000..9f12707d4 --- /dev/null +++ b/packages/ethereum-wallets/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/ethereum-wallets/tsconfig.esm.json b/packages/ethereum-wallets/tsconfig.esm.json new file mode 100644 index 000000000..a51c6f15e --- /dev/null +++ b/packages/ethereum-wallets/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/ethereum-wallets/tsconfig.json b/packages/ethereum-wallets/tsconfig.json index a3bd77f18..4d8b27c19 100644 --- a/packages/ethereum-wallets/tsconfig.json +++ b/packages/ethereum-wallets/tsconfig.json @@ -1,24 +1,14 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*"] } - ] + }, + "include": ["src/**/*"] } diff --git a/packages/ethereum-wallets/tsconfig.lib.json b/packages/ethereum-wallets/tsconfig.lib.json deleted file mode 100644 index e4b5275a2..000000000 --- a/packages/ethereum-wallets/tsconfig.lib.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": ["node"] - }, - "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": ["jest.config.ts", "**/*.spec.ts"], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] -} diff --git a/packages/ethereum-wallets/tsconfig.spec.json b/packages/ethereum-wallets/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/ethereum-wallets/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/here-wallet/dist/cjs/core/src/index.d.ts b/packages/here-wallet/dist/cjs/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/index.d.ts.map b/packages/here-wallet/dist/cjs/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/index.js b/packages/here-wallet/dist/cjs/core/src/index.js new file mode 100644 index 000000000..cfb828bf8 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = exports.allowOnlyLanguage = exports.translate = exports.serializeNep413 = exports.verifySignature = exports.verifyFullKeyBelongsToUser = exports.isCurrentBrowserSupported = exports.getActiveAccount = exports.waitFor = exports.EventEmitter = exports.setupWalletSelector = void 0; +var wallet_selector_js_1 = require("./lib/wallet-selector.js"); +Object.defineProperty(exports, "setupWalletSelector", { enumerable: true, get: function () { return wallet_selector_js_1.setupWalletSelector; } }); +var services_1 = require("./lib/services"); +Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return services_1.EventEmitter; } }); +var helpers_1 = require("./lib/helpers"); +Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return helpers_1.waitFor; } }); +Object.defineProperty(exports, "getActiveAccount", { enumerable: true, get: function () { return helpers_1.getActiveAccount; } }); +Object.defineProperty(exports, "isCurrentBrowserSupported", { enumerable: true, get: function () { return helpers_1.isCurrentBrowserSupported; } }); +Object.defineProperty(exports, "verifyFullKeyBelongsToUser", { enumerable: true, get: function () { return helpers_1.verifyFullKeyBelongsToUser; } }); +Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return helpers_1.verifySignature; } }); +Object.defineProperty(exports, "serializeNep413", { enumerable: true, get: function () { return helpers_1.serializeNep413; } }); +var translate_1 = require("./lib/translate/translate"); +Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } }); +Object.defineProperty(exports, "allowOnlyLanguage", { enumerable: true, get: function () { return translate_1.allowOnlyLanguage; } }); +var testUtils_1 = require("./lib/testUtils"); +Object.defineProperty(exports, "mockWallet", { enumerable: true, get: function () { return testUtils_1.mockWallet; } }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/constants.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/constants.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/constants.js b/packages/here-wallet/dist/cjs/core/src/lib/constants.js new file mode 100644 index 000000000..50899a58d --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PENDING_SELECTED_WALLET_ID = exports.SELECTED_WALLET_ID = exports.PENDING_CONTRACT = exports.CONTRACT = exports.REMEMBER_RECENT_WALLETS_STATE = exports.REMEMBER_RECENT_WALLETS = exports.RECENTLY_SIGNED_IN_WALLETS = exports.PACKAGE_NAME = void 0; +exports.PACKAGE_NAME = "near-wallet-selector"; +exports.RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +exports.REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +exports.REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +exports.CONTRACT = "contract"; +exports.PENDING_CONTRACT = "contract:pending"; +exports.SELECTED_WALLET_ID = `selectedWalletId`; +exports.PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/detect-browser.js b/packages/here-wallet/dist/cjs/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..a03402ab2 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,74 @@ +"use strict"; +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCurrentBrowserSupported = void 0; +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; +exports.isCurrentBrowserSupported = isCurrentBrowserSupported; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.js b/packages/here-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..0da744cc5 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActiveAccount = void 0; +const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; +exports.getActiveAccount = getActiveAccount; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/index.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/index.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/index.js b/packages/here-wallet/dist/cjs/core/src/lib/helpers/index.js new file mode 100644 index 000000000..eb80ab43a --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./waitFor"), exports); +__exportStar(require("./getActiveAccount"), exports); +__exportStar(require("./detect-browser"), exports); +__exportStar(require("./verify-signature/verify-signature"), exports); +__exportStar(require("./verify-signature/payload"), exports); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.js b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..5655fd8cd --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeNep413 = exports.payloadSchema = exports.createPayload = void 0; +const borsh_1 = require("borsh"); +const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +exports.createPayload = createPayload; +exports.payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +const serializeNep413 = (signMessageParams) => { + const payload = (0, exports.createPayload)(signMessageParams); + return Buffer.from((0, borsh_1.serialize)(exports.payloadSchema, payload)); +}; +exports.serializeNep413 = serializeNep413; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..5d00297d2 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyFullKeyBelongsToUser = exports.verifySignature = void 0; +const borsh_1 = require("borsh"); +const js_sha256_1 = require("js-sha256"); +const payload_1 = require("./payload"); +const crypto_1 = require("../../../../../../../near-api-js/packages/crypto"); +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +const providers_1 = require("@near-js/providers"); +const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = (0, borsh_1.serialize)(payload_1.payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(js_sha256_1.sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = (0, crypto_1.publicKeyFrom)(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +exports.verifySignature = verifySignature; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new providers_1.JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; +exports.verifyFullKeyBelongsToUser = verifyFullKeyBelongsToUser; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/helpers/waitFor.js b/packages/here-wallet/dist/cjs/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..8d37d4cef --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/helpers/waitFor.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitFor = void 0; +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; +exports.waitFor = waitFor; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/ar.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/bg.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/en.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/es.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/hi.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/hr.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/ko.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/mk.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/sl.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/sr.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/vi.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/locale/zh.json b/packages/here-wallet/dist/cjs/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/here-wallet/dist/cjs/core/src/lib/options.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/options.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/options.js b/packages/here-wallet/dist/cjs/core/src/lib/options.js new file mode 100644 index 000000000..587fab7eb --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/options.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveOptions = exports.resolveNetwork = exports.getNetworkPreset = void 0; +const services_1 = require("./services"); +const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +exports.getNetworkPreset = getNetworkPreset; +const resolveNetwork = (network) => { + return typeof network === "string" ? (0, exports.getNetworkPreset)(network) : network; +}; +exports.resolveNetwork = resolveNetwork; +const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: (0, exports.resolveNetwork)(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new services_1.WebStorageService(), + }; +}; +exports.resolveOptions = resolveOptions; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/options.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/options.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/options.types.js b/packages/here-wallet/dist/cjs/core/src/lib/options.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/options.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..1129f4fc6 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventEmitter = void 0; +const events_1 = require("events"); +class EventEmitter { + emitter = new events_1.EventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} +exports.EventEmitter = EventEmitter; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/index.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/index.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/index.js b/packages/here-wallet/dist/cjs/core/src/lib/services/index.js new file mode 100644 index 000000000..771f7ca4c --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./provider/provider.service"), exports); +__exportStar(require("./provider/provider.service.types"), exports); +__exportStar(require("./storage/storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service"), exports); +__exportStar(require("./storage/web-storage.service"), exports); +__exportStar(require("./logger/logger.service"), exports); +__exportStar(require("./logger/logger.service.types"), exports); +__exportStar(require("./wallet-modules/wallet-modules.service"), exports); +__exportStar(require("./event-emitter/event-emitter.service"), exports); +__exportStar(require("./event-emitter/event-emitter.types"), exports); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.js b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..f2365f6b4 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = exports.Logger = void 0; +class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +exports.Logger = Logger; +exports.logger = new Logger(); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.js b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.js b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..7798a5f3f --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Provider = void 0; +const providers_1 = require("@near-js/providers"); +class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new providers_1.FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new providers_1.JsonRpcProvider({ url })) + : []; + } +} +exports.Provider = Provider; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.js b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.js b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..1d1ed0bf1 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonStorage = void 0; +const KEY_DELIMITER = ":"; +class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} +exports.JsonStorage = JsonStorage; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.js b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.js b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..b1b3430c7 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebStorageService = void 0; +class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} +exports.WebStorageService = WebStorageService; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..a27acfb1e --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,325 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletModules = void 0; +const event_emitter_service_1 = require("../event-emitter/event-emitter.service"); +const logger_service_1 = require("../logger/logger.service"); +const constants_1 = require("../../constants"); +const json_storage_service_1 = require("../storage/json-storage.service"); +class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger_service_1.logger.log(`Failed to validate ${wallet.id} during setup`); + logger_service_1.logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(constants_1.PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(constants_1.PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(constants_1.PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(constants_1.PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger_service_1.logger.log("Failed to sign out existing wallet"); + logger_service_1.logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(constants_1.RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger_service_1.logger.log(`Failed to sign out ${wallet.id}`); + logger_service_1.logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(constants_1.PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(constants_1.PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new event_emitter_service_1.EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new logger_service_1.Logger(module.id), + storage: new json_storage_service_1.JsonStorage(this.storage, [constants_1.PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger_service_1.logger.log("Failed to setup module"); + logger_service_1.logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger_service_1.logger.error("Failed to sign in to wallet. " + err); + } + } + } +} +exports.WalletModules = WalletModules; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/store.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/store.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/store.js b/packages/here-wallet/dist/cjs/core/src/lib/store.js new file mode 100644 index 000000000..fc078e464 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/store.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStore = void 0; +const rxjs_1 = require("rxjs"); +const services_1 = require("./services"); +const constants_1 = require("./constants"); +const reducer = (state, action) => { + services_1.logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? constants_1.REMEMBER_RECENT_WALLETS_STATE.DISABLED + : constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +const createStore = async (storage) => { + const jsonStorage = new services_1.JsonStorage(storage, constants_1.PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(constants_1.CONTRACT), + selectedWalletId: await jsonStorage.getItem(constants_1.SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new rxjs_1.BehaviorSubject(initialState); + const actions$ = new rxjs_1.Subject(); + actions$.pipe((0, rxjs_1.scan)(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, constants_1.SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, constants_1.CONTRACT, "contract"); + syncStorage(prevState, state, constants_1.RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, constants_1.REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; +exports.createStore = createStore; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/store.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/store.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/store.types.js b/packages/here-wallet/dist/cjs/core/src/lib/store.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/store.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/testUtils.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/testUtils.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/testUtils.js b/packages/here-wallet/dist/cjs/core/src/lib/testUtils.js new file mode 100644 index 000000000..5e0cc0df9 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/testUtils.js @@ -0,0 +1,107 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = void 0; +// Remove Jest import +// import * as jest from "jest"; +const jest_mock_extended_1 = require("jest-mock-extended"); +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +const mockWallet = async (factory, deps) => { + const { options, storage } = (0, options_1.resolveOptions)({ + network: (0, options_1.getNetworkPreset)("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const walletModules = new services_1.WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || (0, jest_mock_extended_1.mock)(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +exports.mockWallet = mockWallet; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/translate/translate.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/translate/translate.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/translate/translate.js b/packages/here-wallet/dist/cjs/core/src/lib/translate/translate.js new file mode 100644 index 000000000..c5573a87c --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/translate/translate.js @@ -0,0 +1,81 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.translate = exports.allowOnlyLanguage = void 0; +const en_json_1 = __importDefault(require("../locale/en.json")); +const es_json_1 = __importDefault(require("../locale/es.json")); +const zh_json_1 = __importDefault(require("../locale/zh.json")); +const bg_json_1 = __importDefault(require("../locale/bg.json")); +const ko_json_1 = __importDefault(require("../locale/ko.json")); +const vi_json_1 = __importDefault(require("../locale/vi.json")); +const hi_json_1 = __importDefault(require("../locale/hi.json")); +const ar_json_1 = __importDefault(require("../locale/ar.json")); +const hr_json_1 = __importDefault(require("../locale/hr.json")); +const mk_json_1 = __importDefault(require("../locale/mk.json")); +const sl_json_1 = __importDefault(require("../locale/sl.json")); +const sr_json_1 = __importDefault(require("../locale/sr.json")); +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en_json_1.default; + case "es": + return es_json_1.default; + case "zh": + return zh_json_1.default; + case "bg": + return bg_json_1.default; + case "ko": + return ko_json_1.default; + case "vi": + return vi_json_1.default; + case "hi": + return hi_json_1.default; + case "ar": + return ar_json_1.default; + case "hr": + return hr_json_1.default; + case "mk": + return mk_json_1.default; + case "sl": + return sl_json_1.default; + case "sr": + return sr_json_1.default; + default: + return en_json_1.default; + } +}; +let chosenLang; +const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +exports.allowOnlyLanguage = allowOnlyLanguage; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; +exports.translate = translate; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/utils.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/utils.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/utils.types.js b/packages/here-wallet/dist/cjs/core/src/lib/utils.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/utils.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.js b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..8ffb4cc07 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletSelector = void 0; +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +const setupWalletSelector = async (params) => { + const { options, storage } = (0, options_1.resolveOptions)(params); + services_1.Logger.debug = options.debug; + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const network = await (0, options_1.getNetworkPreset)(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new services_1.WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new services_1.Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; +exports.setupWalletSelector = setupWalletSelector; diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.types.js b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet-selector.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet/index.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet/index.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet/index.js b/packages/here-wallet/dist/cjs/core/src/lib/wallet/index.js new file mode 100644 index 000000000..d7ee97f6b --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./wallet.types"), exports); +__exportStar(require("./transactions.types"), exports); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet/transactions.types.js b/packages/here-wallet/dist/cjs/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet/transactions.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts b/packages/here-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map b/packages/here-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,UAAU,kBAAkB;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CACvE,CAAC;AAEF,UAAU,4BAA4B;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB;AAED,UAAU,6BAA6B;IACrC;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;CACxD;AAED,UAAU,mBAAmB;IAC3B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB;;;;OAIG;IACH,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACtE;;;OAGG;IACH,sBAAsB,CACpB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC;;;OAGG;IACH,uBAAuB,CACrB,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACzC,WAAW,CAAC,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CACxE;AAED,KAAK,UAAU,CACb,IAAI,SAAS,MAAM,EACnB,QAAQ,SAAS,kBAAkB,EACnC,SAAS,IACP;IACF;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IACX;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;KAC1B,CAAC;IACF,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,EAAE;QAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAC9C,cAAc,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,CAAC;AAIF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG;IACvD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,UAAU,yBAA0B,SAAQ,YAAY;IACtD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,yCACR,SAAQ,4BAA4B;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,0CACR,SAAQ,6BAA6B;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,mBAAmB,EACnB;IACE,sBAAsB,CAAC,IAAI,MAAM,CAAC;IAClC,6BAA6B,CAAC,EAAE,KAAK,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,sBAAsB,CACpB,MAAM,EAAE,yCAAyC,GAChD,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IACzC,uBAAuB,CACrB,MAAM,EAAE,0CAA0C,GACjD,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CACpC,SAAS,EACT,qBAAqB,EACrB,sBAAsB,CACvB,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,mBAAmB,EACnB;IACE,sBAAsB,CAAC,IAAI,MAAM,CAAC;IAClC,6BAA6B,CAAC,CAC5B,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CACrC,UAAU,EACV,sBAAsB,EACtB,uBAAuB,CACxB,CAAC;AAIF,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,GAAG;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,GAAG;IAC7D,aAAa,IAAI,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CACxC,cAAc,EACd,yBAAyB,EACzB,0BAA0B,CAC3B,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA2B,SAAQ,YAAY;IAC9D;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,mBAAmB,EACnB;IAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,CACxE,GAAG;IACF,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CACrC,UAAU,EACV,sBAAsB,EACtB,uBAAuB,CACxB,CAAC;AAIF,UAAU,wBAAyB,SAAQ,YAAY;IACrD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEtD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CACxC,mBAAmB,EACnB;IAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,CACtE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CACnC,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,CACtB,CAAC;AAIF,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,yBAAyB,GACzB,sBAAsB,GACtB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,MAAM,GACd,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,cAAc,GACd,YAAY,CAAC;AAEjB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB,CAAC,SAAS,SAAS,MAAM;IAC9D,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAGD,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,MAAM,EACxB,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,CACF,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,YAAY,KACtD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;AAE1D,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI;IAC5D,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,CACF,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,CACnE,OAAO,EAAE,mBAAmB,KACzB,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/core/src/lib/wallet/wallet.types.js b/packages/here-wallet/dist/cjs/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/core/src/lib/wallet/wallet.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/index.d.ts b/packages/here-wallet/dist/cjs/here-wallet/src/index.d.ts new file mode 100644 index 000000000..4bf5028fa --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/index.d.ts @@ -0,0 +1,2 @@ +export { setupHereWallet } from "./lib"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/index.d.ts.map b/packages/here-wallet/dist/cjs/here-wallet/src/index.d.ts.map new file mode 100644 index 000000000..0a49b71ed --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/index.js b/packages/here-wallet/dist/cjs/here-wallet/src/index.js new file mode 100644 index 000000000..fc33e0d1c --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupHereWallet = void 0; +var lib_1 = require("./lib"); +Object.defineProperty(exports, "setupHereWallet", { enumerable: true, get: function () { return lib_1.setupHereWallet; } }); diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/icon.d.ts b/packages/here-wallet/dist/cjs/here-wallet/src/lib/icon.d.ts new file mode 100644 index 000000000..0cacd97b6 --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOS43MzM1IDExLjY4MzFMMjEuNzA4OSA4TDI0LjI5ODMgMTYuNjc2NkwyMC40MTYgMTQuOTIxNUwxOS43MzM1IDExLjY4MzFaTTUuNzYzODggMTUuNTQwOUwzLjc1NTYyIDE5LjE2MjFMOS44OTYwNSAyMi4xNjYxTDE4LjM0NzMgMjEuNTgyOEw1Ljc2Mzg4IDE1LjU0MDlaTTQuNjQ0NjQgMjIuMzY5NEwyLjY0ODY1IDI1Ljk3MTNMMTQuOTA4MyAzMi4wNTc1TDM1LjMzODggMzAuODE3NEwzNy4zMzQ4IDI3LjIxNTRMMTYuOTA0MyAyOC40NTU3TDQuNjQ0NjQgMjIuMzY5NFoiIGZpbGw9IiMyQzMwMzQiLz4KPHBhdGggZD0iTTM3LjMzNTkgMjcuMjE1N0wxNi45MTEyIDI4LjQ1NjFMNC41NDYzMyAyMi4zNTU0TDE3LjkzNTggMjEuNTQ1M0w1Ljc2Mzg3IDE1LjU0MDlMMTEuNzQxIDEwLjQ3ODZMMjQuMTQwMSAxNi41NzYzTDIxLjcwOSA4TDMzLjU1NyAxMy44MUwzNy4zMzU5IDI3LjIxNTdaIiBmaWxsPSIjRkRCRjFDIi8+Cjwvc3ZnPgo="; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/icon.d.ts.map b/packages/here-wallet/dist/cjs/here-wallet/src/lib/icon.d.ts.map new file mode 100644 index 000000000..4223dee82 --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAAo2B"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/icon.js b/packages/here-wallet/dist/cjs/here-wallet/src/lib/icon.js new file mode 100644 index 000000000..b09b46088 --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/icon.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOS43MzM1IDExLjY4MzFMMjEuNzA4OSA4TDI0LjI5ODMgMTYuNjc2NkwyMC40MTYgMTQuOTIxNUwxOS43MzM1IDExLjY4MzFaTTUuNzYzODggMTUuNTQwOUwzLjc1NTYyIDE5LjE2MjFMOS44OTYwNSAyMi4xNjYxTDE4LjM0NzMgMjEuNTgyOEw1Ljc2Mzg4IDE1LjU0MDlaTTQuNjQ0NjQgMjIuMzY5NEwyLjY0ODY1IDI1Ljk3MTNMMTQuOTA4MyAzMi4wNTc1TDM1LjMzODggMzAuODE3NEwzNy4zMzQ4IDI3LjIxNTRMMTYuOTA0MyAyOC40NTU3TDQuNjQ0NjQgMjIuMzY5NFoiIGZpbGw9IiMyQzMwMzQiLz4KPHBhdGggZD0iTTM3LjMzNTkgMjcuMjE1N0wxNi45MTEyIDI4LjQ1NjFMNC41NDYzMyAyMi4zNTU0TDE3LjkzNTggMjEuNTQ1M0w1Ljc2Mzg3IDE1LjU0MDlMMTEuNzQxIDEwLjQ3ODZMMjQuMTQwMSAxNi41NzYzTDIxLjcwOSA4TDMzLjU1NyAxMy44MUwzNy4zMzU5IDI3LjIxNTdaIiBmaWxsPSIjRkRCRjFDIi8+Cjwvc3ZnPgo="; diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/index.d.ts b/packages/here-wallet/dist/cjs/here-wallet/src/lib/index.d.ts new file mode 100644 index 000000000..561f4ce21 --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/index.d.ts @@ -0,0 +1,11 @@ +import type { HereInitializeOptions } from "@here-wallet/core"; +import type { WalletModuleFactory, InjectedWallet } from "@near-wallet-selector/core"; +import icon from "./icon"; +export { icon }; +interface Options { + deprecated?: boolean; + iconUrl?: string; + walletOptions?: HereInitializeOptions; +} +export declare function setupHereWallet({ deprecated, iconUrl, walletOptions, }?: Options): WalletModuleFactory; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/index.d.ts.map b/packages/here-wallet/dist/cjs/here-wallet/src/lib/index.d.ts.map new file mode 100644 index 000000000..066a43b18 --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,UAAU,OAAO;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAED,wBAAgB,eAAe,CAAC,EAC9B,UAAkB,EAClB,OAAc,EACd,aAAa,GACd,GAAE,OAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAoBpD"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/index.js b/packages/here-wallet/dist/cjs/here-wallet/src/lib/index.js new file mode 100644 index 000000000..f5c3d8b5a --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/index.js @@ -0,0 +1,31 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.icon = void 0; +exports.setupHereWallet = setupHereWallet; +const core_1 = require("@here-wallet/core"); +const selector_1 = require("./selector"); +const icon_1 = __importDefault(require("./icon")); +exports.icon = icon_1.default; +function setupHereWallet({ deprecated = false, iconUrl = icon_1.default, walletOptions, } = {}) { + return async () => { + const isInjected = await core_1.waitInjectedHereWallet; + return { + id: "here-wallet", + type: "injected", + metadata: { + name: "Here Wallet", + description: "Mobile wallet for NEAR Protocol", + useUrlAccountImport: true, + downloadUrl: "https://herewallet.app", + topLevelInjected: isInjected != null, + iconUrl, + deprecated, + available: true, + }, + init: (config) => (0, selector_1.initHereWallet)({ ...config, walletOptions }), + }; + }; +} diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/selector.d.ts b/packages/here-wallet/dist/cjs/here-wallet/src/lib/selector.d.ts new file mode 100644 index 000000000..2130a1e6f --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/selector.d.ts @@ -0,0 +1,3 @@ +import type { SelectorInit } from "./types"; +export declare const initHereWallet: SelectorInit; +//# sourceMappingURL=selector.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/selector.d.ts.map b/packages/here-wallet/dist/cjs/here-wallet/src/lib/selector.d.ts.map new file mode 100644 index 000000000..c1060dde4 --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../../../../src/lib/selector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,cAAc,EAAE,YAsG5B,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/selector.js b/packages/here-wallet/dist/cjs/here-wallet/src/lib/selector.js new file mode 100644 index 000000000..af23c7039 --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.initHereWallet = void 0; +const core_1 = require("@here-wallet/core"); +const initHereWallet = async (config) => { + const { store, logger, emitter, options, walletOptions } = config; + const here = await core_1.HereWallet.connect(walletOptions); + async function getAccounts() { + logger.log("HereWallet:getAccounts"); + const accountIds = await here.getAccounts(); + const accounts = []; + for (let i = 0; i < accountIds.length; i++) { + const pub = await here.signer.getPublicKey(accountIds[i], options.network.networkId); + accounts.push({ accountId: accountIds[i], publicKey: pub.toString() }); + } + return accounts; + } + return { + get networkId() { + return here.networkId; + }, + buildImportAccountsUrl() { + return `https://my.herewallet.app/import?network=${options.network.networkId}`; + }, + async account(id) { + logger.log("HereWallet:account"); + return await here.account(id); + }, + async switchAccount(id) { + logger.log("HereWallet:switchAccount"); + await here.switchAccount(id); + }, + async getAccountId() { + logger.log("HereWallet:getAccountId"); + return await here.getAccountId(); + }, + async isSignedIn() { + logger.log("HereWallet:isSignedIn"); + return await here.isSignedIn(); + }, + async signIn(data) { + logger.log("HereWallet:signIn"); + const isInjected = await core_1.waitInjectedHereWallet; + if (!isInjected) { + const contractId = data.contractId !== "" ? data.contractId : undefined; + await here.signIn({ ...data, contractId: contractId }); + } + emitter.emit("signedIn", { + contractId: data.contractId, + methodNames: data.methodNames ?? [], + accounts: await getAccounts(), + }); + return await getAccounts(); + }, + async signOut() { + logger.log("HereWallet:signOut"); + await here.signOut(); + }, + async getAccounts() { + return getAccounts(); + }, + async signAndSendTransaction(data) { + logger.log("HereWallet:signAndSendTransaction", data); + const { contract } = store.getState(); + return await here.signAndSendTransaction({ + receiverId: contract?.contractId, + ...data, + }); + }, + async verifyOwner() { + throw Error("HereWallet:verifyOwner is deprecated, use signMessage method with implementation NEP0413 Standard"); + }, + async signMessage(data) { + logger.log("HereWallet:signMessage", data); + return await here.signMessage(data); + }, + async signAndSendTransactions(data) { + logger.log("HereWallet:signAndSendTransactions", data); + return await here.signAndSendTransactions(data); + }, + }; +}; +exports.initHereWallet = initHereWallet; diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/types.d.ts b/packages/here-wallet/dist/cjs/here-wallet/src/lib/types.d.ts new file mode 100644 index 000000000..e23ca4001 --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/types.d.ts @@ -0,0 +1,6 @@ +import type { HereInitializeOptions } from "@here-wallet/core"; +import type { WalletBehaviourFactory, InjectedWallet } from "@near-wallet-selector/core"; +export type SelectorInit = WalletBehaviourFactory; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/types.d.ts.map b/packages/here-wallet/dist/cjs/here-wallet/src/lib/types.d.ts.map new file mode 100644 index 000000000..6684db20f --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,YAAY,GAAG,sBAAsB,CAC/C,cAAc,EACd;IAAE,aAAa,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAC1C,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/cjs/here-wallet/src/lib/types.js b/packages/here-wallet/dist/cjs/here-wallet/src/lib/types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/here-wallet/dist/cjs/here-wallet/src/lib/types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/here-wallet/dist/esm/core/src/index.d.ts b/packages/here-wallet/dist/esm/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/index.d.ts.map b/packages/here-wallet/dist/esm/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/index.js b/packages/here-wallet/dist/esm/core/src/index.js new file mode 100644 index 000000000..a545ffa59 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/index.js @@ -0,0 +1,5 @@ +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export { EventEmitter } from "./lib/services"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; diff --git a/packages/here-wallet/dist/esm/core/src/lib/constants.d.ts b/packages/here-wallet/dist/esm/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/constants.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/constants.js b/packages/here-wallet/dist/esm/core/src/lib/constants.js new file mode 100644 index 000000000..a75f1a50e --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/constants.js @@ -0,0 +1,11 @@ +export const PACKAGE_NAME = "near-wallet-selector"; +export const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export const REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +export const CONTRACT = "contract"; +export const PENDING_CONTRACT = "contract:pending"; +export const SELECTED_WALLET_ID = `selectedWalletId`; +export const PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts b/packages/here-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/detect-browser.js b/packages/here-wallet/dist/esm/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..c4e583914 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,70 @@ +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +export const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts b/packages/here-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.js b/packages/here-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..b2db314cb --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,3 @@ +export const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/index.d.ts b/packages/here-wallet/dist/esm/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/index.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/index.js b/packages/here-wallet/dist/esm/core/src/lib/helpers/index.js new file mode 100644 index 000000000..69aaf908c --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/index.js @@ -0,0 +1,5 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.js b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..f2a7f147e --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,97 @@ +import { serialize } from "borsh"; +export const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +export const payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +export const serializeNep413 = (signMessageParams) => { + const payload = createPayload(signMessageParams); + return Buffer.from(serialize(payloadSchema, payload)); +}; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..f08e83f02 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,39 @@ +import { serialize } from "borsh"; +import { sha256 } from "js-sha256"; +import { payloadSchema } from "./payload"; +import { publicKeyFrom } from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import { JsonRpcProvider } from "@near-js/providers"; +export const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = serialize(payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = publicKeyFrom(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +export const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts b/packages/here-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/helpers/waitFor.js b/packages/here-wallet/dist/esm/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..55fc5398f --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/helpers/waitFor.js @@ -0,0 +1,22 @@ +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +export const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/ar.json b/packages/here-wallet/dist/esm/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/bg.json b/packages/here-wallet/dist/esm/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/en.json b/packages/here-wallet/dist/esm/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/es.json b/packages/here-wallet/dist/esm/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/hi.json b/packages/here-wallet/dist/esm/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/hr.json b/packages/here-wallet/dist/esm/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/ko.json b/packages/here-wallet/dist/esm/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/mk.json b/packages/here-wallet/dist/esm/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/sl.json b/packages/here-wallet/dist/esm/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/sr.json b/packages/here-wallet/dist/esm/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/vi.json b/packages/here-wallet/dist/esm/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/locale/zh.json b/packages/here-wallet/dist/esm/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/options.d.ts b/packages/here-wallet/dist/esm/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/options.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/options.js b/packages/here-wallet/dist/esm/core/src/lib/options.js new file mode 100644 index 000000000..fa6b65f26 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/options.js @@ -0,0 +1,40 @@ +import { WebStorageService } from "./services"; +export const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +export const resolveNetwork = (network) => { + return typeof network === "string" ? getNetworkPreset(network) : network; +}; +export const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: resolveNetwork(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new WebStorageService(), + }; +}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/options.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/options.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/options.types.js b/packages/here-wallet/dist/esm/core/src/lib/options.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/options.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..304200d75 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,16 @@ +import { EventEmitter as NEventEmitter } from "events"; +export class EventEmitter { + emitter = new NEventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/index.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/index.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/index.js b/packages/here-wallet/dist/esm/core/src/lib/services/index.js new file mode 100644 index 000000000..5301a0f98 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/index.js @@ -0,0 +1,11 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.js b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..d1ca57bc4 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,32 @@ +export class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +export const logger = new Logger(); diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.js b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.js b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..bfcf13b62 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,43 @@ +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +export class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new JsonRpcProvider({ url })) + : []; + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.js b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.js b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..a9175d614 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,25 @@ +const KEY_DELIMITER = ":"; +export class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.js b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.js b/packages/here-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.js b/packages/here-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..3b6ee32f5 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,20 @@ +export class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..d5aa498d4 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,321 @@ +import { EventEmitter } from "../event-emitter/event-emitter.service"; +import { Logger, logger } from "../logger/logger.service"; +import { RECENTLY_SIGNED_IN_WALLETS, PACKAGE_NAME, PENDING_CONTRACT, PENDING_SELECTED_WALLET_ID, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "../../constants"; +import { JsonStorage } from "../storage/json-storage.service"; +export class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger.log(`Failed to validate ${wallet.id} during setup`); + logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger.log("Failed to sign out existing wallet"); + logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger.log(`Failed to sign out ${wallet.id}`); + logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new Logger(module.id), + storage: new JsonStorage(this.storage, [PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger.log("Failed to setup module"); + logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger.error("Failed to sign in to wallet. " + err); + } + } + } +} diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/store.d.ts b/packages/here-wallet/dist/esm/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/store.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/store.js b/packages/here-wallet/dist/esm/core/src/lib/store.js new file mode 100644 index 000000000..32dc79078 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/store.js @@ -0,0 +1,154 @@ +import { Subject, BehaviorSubject, scan } from "rxjs"; +import { logger, JsonStorage } from "./services"; +import { PACKAGE_NAME, CONTRACT, SELECTED_WALLET_ID, RECENTLY_SIGNED_IN_WALLETS, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "./constants"; +const reducer = (state, action) => { + logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? REMEMBER_RECENT_WALLETS_STATE.DISABLED + : REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +export const createStore = async (storage) => { + const jsonStorage = new JsonStorage(storage, PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(CONTRACT), + selectedWalletId: await jsonStorage.getItem(SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new BehaviorSubject(initialState); + const actions$ = new Subject(); + actions$.pipe(scan(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, CONTRACT, "contract"); + syncStorage(prevState, state, RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/store.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/store.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/store.types.js b/packages/here-wallet/dist/esm/core/src/lib/store.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/store.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/testUtils.d.ts b/packages/here-wallet/dist/esm/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/testUtils.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/testUtils.js b/packages/here-wallet/dist/esm/core/src/lib/testUtils.js new file mode 100644 index 000000000..7e90e1ce8 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/testUtils.js @@ -0,0 +1,103 @@ +// Remove Jest import +// import * as jest from "jest"; +import { mock } from "jest-mock-extended"; +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, WalletModules } from "./services"; +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +export const mockWallet = async (factory, deps) => { + const { options, storage } = resolveOptions({ + network: getNetworkPreset("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new EventEmitter(); + const store = await createStore(storage); + const walletModules = new WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || mock(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/here-wallet/dist/esm/core/src/lib/translate/translate.d.ts b/packages/here-wallet/dist/esm/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/translate/translate.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/translate/translate.js b/packages/here-wallet/dist/esm/core/src/lib/translate/translate.js new file mode 100644 index 000000000..610c02a94 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/translate/translate.js @@ -0,0 +1,73 @@ +import en from "../locale/en.json"; +import es from "../locale/es.json"; +import zh from "../locale/zh.json"; +import bg from "../locale/bg.json"; +import ko from "../locale/ko.json"; +import vi from "../locale/vi.json"; +import hi from "../locale/hi.json"; +import ar from "../locale/ar.json"; +import hr from "../locale/hr.json"; +import mk from "../locale/mk.json"; +import sl from "../locale/sl.json"; +import sr from "../locale/sr.json"; +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en; + case "es": + return es; + case "zh": + return zh; + case "bg": + return bg; + case "ko": + return ko; + case "vi": + return vi; + case "hi": + return hi; + case "ar": + return ar; + case "hr": + return hr; + case "mk": + return mk; + case "sl": + return sl; + case "sr": + return sr; + default: + return en; + } +}; +let chosenLang; +export const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +export const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/utils.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/utils.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/utils.types.js b/packages/here-wallet/dist/esm/core/src/lib/utils.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/utils.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.d.ts b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.js b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..af67afbb6 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.js @@ -0,0 +1,79 @@ +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, Logger, WalletModules, Provider } from "./services"; +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export const setupWalletSelector = async (params) => { + const { options, storage } = resolveOptions(params); + Logger.debug = options.debug; + const emitter = new EventEmitter(); + const store = await createStore(storage); + const network = await getNetworkPreset(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.types.js b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet-selector.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet/index.d.ts b/packages/here-wallet/dist/esm/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet/index.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet/index.js b/packages/here-wallet/dist/esm/core/src/lib/wallet/index.js new file mode 100644 index 000000000..bd35cba8b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet/index.js @@ -0,0 +1,2 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet/transactions.types.js b/packages/here-wallet/dist/esm/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet/transactions.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts b/packages/here-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map b/packages/here-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,UAAU,kBAAkB;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CACvE,CAAC;AAEF,UAAU,4BAA4B;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB;AAED,UAAU,6BAA6B;IACrC;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;CACxD;AAED,UAAU,mBAAmB;IAC3B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB;;;;OAIG;IACH,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACtE;;;OAGG;IACH,sBAAsB,CACpB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC;;;OAGG;IACH,uBAAuB,CACrB,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACzC,WAAW,CAAC,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CACxE;AAED,KAAK,UAAU,CACb,IAAI,SAAS,MAAM,EACnB,QAAQ,SAAS,kBAAkB,EACnC,SAAS,IACP;IACF;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IACX;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;KAC1B,CAAC;IACF,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,EAAE;QAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAC9C,cAAc,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,CAAC;AAIF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG;IACvD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,UAAU,yBAA0B,SAAQ,YAAY;IACtD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,yCACR,SAAQ,4BAA4B;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,0CACR,SAAQ,6BAA6B;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,mBAAmB,EACnB;IACE,sBAAsB,CAAC,IAAI,MAAM,CAAC;IAClC,6BAA6B,CAAC,EAAE,KAAK,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,sBAAsB,CACpB,MAAM,EAAE,yCAAyC,GAChD,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IACzC,uBAAuB,CACrB,MAAM,EAAE,0CAA0C,GACjD,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CACpC,SAAS,EACT,qBAAqB,EACrB,sBAAsB,CACvB,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,mBAAmB,EACnB;IACE,sBAAsB,CAAC,IAAI,MAAM,CAAC;IAClC,6BAA6B,CAAC,CAC5B,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CACrC,UAAU,EACV,sBAAsB,EACtB,uBAAuB,CACxB,CAAC;AAIF,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,GAAG;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,GAAG;IAC7D,aAAa,IAAI,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CACxC,cAAc,EACd,yBAAyB,EACzB,0BAA0B,CAC3B,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA2B,SAAQ,YAAY;IAC9D;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,mBAAmB,EACnB;IAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,CACxE,GAAG;IACF,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CACrC,UAAU,EACV,sBAAsB,EACtB,uBAAuB,CACxB,CAAC;AAIF,UAAU,wBAAyB,SAAQ,YAAY;IACrD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEtD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CACxC,mBAAmB,EACnB;IAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,CACtE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CACnC,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,CACtB,CAAC;AAIF,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,yBAAyB,GACzB,sBAAsB,GACtB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,MAAM,GACd,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,cAAc,GACd,YAAY,CAAC;AAEjB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB,CAAC,SAAS,SAAS,MAAM;IAC9D,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAGD,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,MAAM,EACxB,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,CACF,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,YAAY,KACtD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;AAE1D,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI;IAC5D,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,CACF,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,CACnE,OAAO,EAAE,mBAAmB,KACzB,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/core/src/lib/wallet/wallet.types.js b/packages/here-wallet/dist/esm/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/core/src/lib/wallet/wallet.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/dist/esm/here-wallet/src/index.d.ts b/packages/here-wallet/dist/esm/here-wallet/src/index.d.ts new file mode 100644 index 000000000..4bf5028fa --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/index.d.ts @@ -0,0 +1,2 @@ +export { setupHereWallet } from "./lib"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/index.d.ts.map b/packages/here-wallet/dist/esm/here-wallet/src/index.d.ts.map new file mode 100644 index 000000000..0a49b71ed --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/index.js b/packages/here-wallet/dist/esm/here-wallet/src/index.js new file mode 100644 index 000000000..11eddcf8e --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/index.js @@ -0,0 +1 @@ +export { setupHereWallet } from "./lib"; diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/icon.d.ts b/packages/here-wallet/dist/esm/here-wallet/src/lib/icon.d.ts new file mode 100644 index 000000000..0cacd97b6 --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOS43MzM1IDExLjY4MzFMMjEuNzA4OSA4TDI0LjI5ODMgMTYuNjc2NkwyMC40MTYgMTQuOTIxNUwxOS43MzM1IDExLjY4MzFaTTUuNzYzODggMTUuNTQwOUwzLjc1NTYyIDE5LjE2MjFMOS44OTYwNSAyMi4xNjYxTDE4LjM0NzMgMjEuNTgyOEw1Ljc2Mzg4IDE1LjU0MDlaTTQuNjQ0NjQgMjIuMzY5NEwyLjY0ODY1IDI1Ljk3MTNMMTQuOTA4MyAzMi4wNTc1TDM1LjMzODggMzAuODE3NEwzNy4zMzQ4IDI3LjIxNTRMMTYuOTA0MyAyOC40NTU3TDQuNjQ0NjQgMjIuMzY5NFoiIGZpbGw9IiMyQzMwMzQiLz4KPHBhdGggZD0iTTM3LjMzNTkgMjcuMjE1N0wxNi45MTEyIDI4LjQ1NjFMNC41NDYzMyAyMi4zNTU0TDE3LjkzNTggMjEuNTQ1M0w1Ljc2Mzg3IDE1LjU0MDlMMTEuNzQxIDEwLjQ3ODZMMjQuMTQwMSAxNi41NzYzTDIxLjcwOSA4TDMzLjU1NyAxMy44MUwzNy4zMzU5IDI3LjIxNTdaIiBmaWxsPSIjRkRCRjFDIi8+Cjwvc3ZnPgo="; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/icon.d.ts.map b/packages/here-wallet/dist/esm/here-wallet/src/lib/icon.d.ts.map new file mode 100644 index 000000000..4223dee82 --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAAo2B"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/icon.js b/packages/here-wallet/dist/esm/here-wallet/src/lib/icon.js new file mode 100644 index 000000000..cd482a002 --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/icon.js @@ -0,0 +1 @@ +export default "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOS43MzM1IDExLjY4MzFMMjEuNzA4OSA4TDI0LjI5ODMgMTYuNjc2NkwyMC40MTYgMTQuOTIxNUwxOS43MzM1IDExLjY4MzFaTTUuNzYzODggMTUuNTQwOUwzLjc1NTYyIDE5LjE2MjFMOS44OTYwNSAyMi4xNjYxTDE4LjM0NzMgMjEuNTgyOEw1Ljc2Mzg4IDE1LjU0MDlaTTQuNjQ0NjQgMjIuMzY5NEwyLjY0ODY1IDI1Ljk3MTNMMTQuOTA4MyAzMi4wNTc1TDM1LjMzODggMzAuODE3NEwzNy4zMzQ4IDI3LjIxNTRMMTYuOTA0MyAyOC40NTU3TDQuNjQ0NjQgMjIuMzY5NFoiIGZpbGw9IiMyQzMwMzQiLz4KPHBhdGggZD0iTTM3LjMzNTkgMjcuMjE1N0wxNi45MTEyIDI4LjQ1NjFMNC41NDYzMyAyMi4zNTU0TDE3LjkzNTggMjEuNTQ1M0w1Ljc2Mzg3IDE1LjU0MDlMMTEuNzQxIDEwLjQ3ODZMMjQuMTQwMSAxNi41NzYzTDIxLjcwOSA4TDMzLjU1NyAxMy44MUwzNy4zMzU5IDI3LjIxNTdaIiBmaWxsPSIjRkRCRjFDIi8+Cjwvc3ZnPgo="; diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/index.d.ts b/packages/here-wallet/dist/esm/here-wallet/src/lib/index.d.ts new file mode 100644 index 000000000..561f4ce21 --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/index.d.ts @@ -0,0 +1,11 @@ +import type { HereInitializeOptions } from "@here-wallet/core"; +import type { WalletModuleFactory, InjectedWallet } from "@near-wallet-selector/core"; +import icon from "./icon"; +export { icon }; +interface Options { + deprecated?: boolean; + iconUrl?: string; + walletOptions?: HereInitializeOptions; +} +export declare function setupHereWallet({ deprecated, iconUrl, walletOptions, }?: Options): WalletModuleFactory; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/index.d.ts.map b/packages/here-wallet/dist/esm/here-wallet/src/lib/index.d.ts.map new file mode 100644 index 000000000..066a43b18 --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,UAAU,OAAO;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAED,wBAAgB,eAAe,CAAC,EAC9B,UAAkB,EAClB,OAAc,EACd,aAAa,GACd,GAAE,OAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAoBpD"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/index.js b/packages/here-wallet/dist/esm/here-wallet/src/lib/index.js new file mode 100644 index 000000000..0f17b5d80 --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/index.js @@ -0,0 +1,24 @@ +import { waitInjectedHereWallet } from "@here-wallet/core"; +import { initHereWallet } from "./selector"; +import icon from "./icon"; +export { icon }; +export function setupHereWallet({ deprecated = false, iconUrl = icon, walletOptions, } = {}) { + return async () => { + const isInjected = await waitInjectedHereWallet; + return { + id: "here-wallet", + type: "injected", + metadata: { + name: "Here Wallet", + description: "Mobile wallet for NEAR Protocol", + useUrlAccountImport: true, + downloadUrl: "https://herewallet.app", + topLevelInjected: isInjected != null, + iconUrl, + deprecated, + available: true, + }, + init: (config) => initHereWallet({ ...config, walletOptions }), + }; + }; +} diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/selector.d.ts b/packages/here-wallet/dist/esm/here-wallet/src/lib/selector.d.ts new file mode 100644 index 000000000..2130a1e6f --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/selector.d.ts @@ -0,0 +1,3 @@ +import type { SelectorInit } from "./types"; +export declare const initHereWallet: SelectorInit; +//# sourceMappingURL=selector.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/selector.d.ts.map b/packages/here-wallet/dist/esm/here-wallet/src/lib/selector.d.ts.map new file mode 100644 index 000000000..c1060dde4 --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../../../../src/lib/selector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,cAAc,EAAE,YAsG5B,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/selector.js b/packages/here-wallet/dist/esm/here-wallet/src/lib/selector.js new file mode 100644 index 000000000..271e2e198 --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/selector.js @@ -0,0 +1,79 @@ +import { HereWallet, waitInjectedHereWallet } from "@here-wallet/core"; +export const initHereWallet = async (config) => { + const { store, logger, emitter, options, walletOptions } = config; + const here = await HereWallet.connect(walletOptions); + async function getAccounts() { + logger.log("HereWallet:getAccounts"); + const accountIds = await here.getAccounts(); + const accounts = []; + for (let i = 0; i < accountIds.length; i++) { + const pub = await here.signer.getPublicKey(accountIds[i], options.network.networkId); + accounts.push({ accountId: accountIds[i], publicKey: pub.toString() }); + } + return accounts; + } + return { + get networkId() { + return here.networkId; + }, + buildImportAccountsUrl() { + return `https://my.herewallet.app/import?network=${options.network.networkId}`; + }, + async account(id) { + logger.log("HereWallet:account"); + return await here.account(id); + }, + async switchAccount(id) { + logger.log("HereWallet:switchAccount"); + await here.switchAccount(id); + }, + async getAccountId() { + logger.log("HereWallet:getAccountId"); + return await here.getAccountId(); + }, + async isSignedIn() { + logger.log("HereWallet:isSignedIn"); + return await here.isSignedIn(); + }, + async signIn(data) { + logger.log("HereWallet:signIn"); + const isInjected = await waitInjectedHereWallet; + if (!isInjected) { + const contractId = data.contractId !== "" ? data.contractId : undefined; + await here.signIn({ ...data, contractId: contractId }); + } + emitter.emit("signedIn", { + contractId: data.contractId, + methodNames: data.methodNames ?? [], + accounts: await getAccounts(), + }); + return await getAccounts(); + }, + async signOut() { + logger.log("HereWallet:signOut"); + await here.signOut(); + }, + async getAccounts() { + return getAccounts(); + }, + async signAndSendTransaction(data) { + logger.log("HereWallet:signAndSendTransaction", data); + const { contract } = store.getState(); + return await here.signAndSendTransaction({ + receiverId: contract?.contractId, + ...data, + }); + }, + async verifyOwner() { + throw Error("HereWallet:verifyOwner is deprecated, use signMessage method with implementation NEP0413 Standard"); + }, + async signMessage(data) { + logger.log("HereWallet:signMessage", data); + return await here.signMessage(data); + }, + async signAndSendTransactions(data) { + logger.log("HereWallet:signAndSendTransactions", data); + return await here.signAndSendTransactions(data); + }, + }; +}; diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/types.d.ts b/packages/here-wallet/dist/esm/here-wallet/src/lib/types.d.ts new file mode 100644 index 000000000..e23ca4001 --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/types.d.ts @@ -0,0 +1,6 @@ +import type { HereInitializeOptions } from "@here-wallet/core"; +import type { WalletBehaviourFactory, InjectedWallet } from "@near-wallet-selector/core"; +export type SelectorInit = WalletBehaviourFactory; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/types.d.ts.map b/packages/here-wallet/dist/esm/here-wallet/src/lib/types.d.ts.map new file mode 100644 index 000000000..6684db20f --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,YAAY,GAAG,sBAAsB,CAC/C,cAAc,EACd;IAAE,aAAa,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAC1C,CAAC"} \ No newline at end of file diff --git a/packages/here-wallet/dist/esm/here-wallet/src/lib/types.js b/packages/here-wallet/dist/esm/here-wallet/src/lib/types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/here-wallet/dist/esm/here-wallet/src/lib/types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/here-wallet/jest.config.ts b/packages/here-wallet/jest.config.ts index 926d40be5..a625276fa 100644 --- a/packages/here-wallet/jest.config.ts +++ b/packages/here-wallet/jest.config.ts @@ -7,7 +7,7 @@ export default { "^.+\\.[tj]s$": [ "ts-jest", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", }, ], }, diff --git a/packages/here-wallet/package.json b/packages/here-wallet/package.json index c2fbc5295..659a7e209 100644 --- a/packages/here-wallet/package.json +++ b/packages/here-wallet/package.json @@ -2,6 +2,36 @@ "name": "@near-wallet-selector/here-wallet", "version": "8.9.13", "description": "Here wallet package for NEAR Wallet Selector.", + "scripts": { + "compile:esm": "tsc -p tsconfig.esm.json", + "compile:cjs": "tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/index.d.ts", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "type": "module", + "dependencies": { + "@here-wallet/core": "*", + "@near-wallet-selector/core": "workspace:*" + }, + "devDependencies": { + "@types/jest": "*", + "@types/node": "*", + "jest": "*", + "rimraf": "*", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js" + } + }, "keywords": [ "near", "blockchain", diff --git a/packages/here-wallet/project.json b/packages/here-wallet/project.json deleted file mode 100644 index a0fd86432..000000000 --- a/packages/here-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "here-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/here-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/here-wallet", - "tsConfig": "packages/here-wallet/tsconfig.lib.json", - "project": "packages/here-wallet/package.json", - "entryFile": "packages/here-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/here-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/here-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/here-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/here-wallet"], - "options": { - "jestConfig": "packages/here-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["browser-wallet"] -} diff --git a/packages/here-wallet/tsconfig.cjs.json b/packages/here-wallet/tsconfig.cjs.json new file mode 100644 index 000000000..9f12707d4 --- /dev/null +++ b/packages/here-wallet/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/here-wallet/tsconfig.esm.json b/packages/here-wallet/tsconfig.esm.json new file mode 100644 index 000000000..da3a0612d --- /dev/null +++ b/packages/here-wallet/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node", "jest"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/here-wallet/tsconfig.json b/packages/here-wallet/tsconfig.json index 8b6d6acaf..4d8b27c19 100644 --- a/packages/here-wallet/tsconfig.json +++ b/packages/here-wallet/tsconfig.json @@ -1,19 +1,14 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*"] } - ] + }, + "include": ["src/**/*"] } diff --git a/packages/here-wallet/tsconfig.lib.json b/packages/here-wallet/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/here-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/here-wallet/tsconfig.spec.json b/packages/here-wallet/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/here-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/ledger/.babelrc b/packages/ledger/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/ledger/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/ledger/.eslintrc.json b/packages/ledger/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/ledger/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/ledger/README.md b/packages/ledger/README.md deleted file mode 100644 index 0fa687b4f..000000000 --- a/packages/ledger/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# @near-wallet-selector/ledger - -This is the [Ledger](https://www.ledger.com/) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` -```bash -# Using Yarn -yarn add @near-wallet-selector/ledger - -# Using NPM. -npm install @near-wallet-selector/ledger -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupLedger } from "@near-wallet-selector/ledger"; - -// Ledger for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const ledger = setupLedger({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [ledger], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/ledger-icon.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupLedger } from "@near-wallet-selector/ledger"; -import ledgerIconUrl from "@near-wallet-selector/ledger/assets/ledger-icon.png"; - -const ledger = setupLedger({ - iconUrl: ledgerIconUrl -}); -``` - -## Known issues -Existing dApps with Ledger support integrated may encounter this error `Device is already open`, it means your current integration and this package are conflicting and two ledger instances are being created. Avoid this scenario by supporting only this package. - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/ledger/assets/ledger-icon.png b/packages/ledger/assets/ledger-icon.png deleted file mode 100644 index 60f13b364..000000000 Binary files a/packages/ledger/assets/ledger-icon.png and /dev/null differ diff --git a/packages/ledger/jest.config.js b/packages/ledger/jest.config.js deleted file mode 100644 index 6c11380ab..000000000 --- a/packages/ledger/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "ledger", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/ledger", -}; diff --git a/packages/ledger/jest.config.ts b/packages/ledger/jest.config.ts deleted file mode 100644 index 4cacd2d73..000000000 --- a/packages/ledger/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "ledger", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/ledger", -}; diff --git a/packages/ledger/package.json b/packages/ledger/package.json deleted file mode 100644 index 7594aa8ff..000000000 --- a/packages/ledger/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/ledger", - "version": "8.9.13", - "description": "Ledger package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "hardware wallet", - "ledger" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/ledger" -} diff --git a/packages/ledger/project.json b/packages/ledger/project.json deleted file mode 100644 index 1916dcc6a..000000000 --- a/packages/ledger/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "ledger", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/ledger/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/ledger", - "tsConfig": "packages/ledger/tsconfig.lib.json", - "project": "packages/ledger/package.json", - "entryFile": "packages/ledger/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/ledger/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/ledger/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/ledger/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/ledger"], - "options": { - "jestConfig": "packages/ledger/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["hardware-wallet"] -} diff --git a/packages/ledger/src/index.ts b/packages/ledger/src/index.ts deleted file mode 100644 index bcc07bcb9..000000000 --- a/packages/ledger/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupLedger } from "./lib/ledger"; -export type { LedgerParams } from "./lib/ledger"; diff --git a/packages/ledger/src/lib/icon.ts b/packages/ledger/src/lib/icon.ts deleted file mode 100644 index 4b7312a8b..000000000 --- a/packages/ledger/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/ledger/src/lib/ledger-client.spec.ts b/packages/ledger/src/lib/ledger-client.spec.ts deleted file mode 100644 index 5d942ee8a..000000000 --- a/packages/ledger/src/lib/ledger-client.spec.ts +++ /dev/null @@ -1,230 +0,0 @@ -import type { DeepPartial } from "ts-essentials"; -import { mock } from "jest-mock-extended"; -import type Transport from "@ledgerhq/hw-transport"; -import type TransportWebHID from "@ledgerhq/hw-transport-webhid"; -import * as nearAPI from "near-api-js"; - -interface CreateLedgerClientParams { - client?: DeepPartial; - transport?: DeepPartial; -} - -const createGetVersionResponseMock = () => { - return Buffer.from([1, 1, 6, 144, 0]); -}; - -const createGetPublicKeyResponseMock = () => { - return Buffer.from([ - 226, 125, 56, 106, 199, 195, 73, 246, 10, 249, 57, 121, 249, 233, 201, 22, - 102, 15, 131, 165, 129, 76, 109, 40, 170, 241, 102, 140, 43, 133, 200, 31, - 144, 0, - ]); -}; - -const createTransactionMock = () => { - const actions = [ - nearAPI.transactions.functionCall( - "addMessage", - { text: "test" }, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - BigInt(nearAPI.utils.format.parseNearAmount("0.00000000003")!), - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - BigInt(nearAPI.utils.format.parseNearAmount("0")!) - ), - ]; - - return nearAPI.transactions.createTransaction( - "test.testnet", - nearAPI.utils.PublicKey.from( - "GF7tLvSzcxX4EtrMFtGvGTb2yUj2DhL8hWzc97BwUkyC" - ), - "guest-book.testnet", - 76068360000003, - actions, - nearAPI.utils.serialize.base_decode( - "DMgHVMag7MAmtEC17Dpvso5DgvqqYcHzrTpTrA86FG7t" - ) - ); -}; - -const createLedgerClient = (params: CreateLedgerClientParams = {}) => { - const client = mock(params.client); - const transport = mock(params.transport); - - jest.mock("@ledgerhq/hw-transport-webhid", () => { - return { - ...client, - default: { - create: () => transport, - }, - }; - }); - - const { - LedgerClient, - CLA, - INS_SIGN, - INS_GET_APP_VERSION, - INS_GET_PUBLIC_KEY, - P1_LAST, - P1_IGNORE, - P2_IGNORE, - networkId, - parseDerivationPath, - // eslint-disable-next-line @typescript-eslint/no-var-requires - } = require("./ledger-client"); - - return { - client: new LedgerClient(), - transport, - parseDerivationPath, - constants: { - CLA, - INS_SIGN, - INS_GET_APP_VERSION, - INS_GET_PUBLIC_KEY, - P1_LAST, - P1_IGNORE, - P2_IGNORE, - networkId, - }, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("getVersion", () => { - it("returns the current version", async () => { - const { client, transport, constants } = createLedgerClient({ - transport: { - send: jest.fn().mockResolvedValue(createGetVersionResponseMock()), - }, - }); - await client.connect(); - const result = await client.getVersion(); - - expect(transport.send).toHaveBeenCalledWith( - constants.CLA, - constants.INS_GET_APP_VERSION, - constants.P1_IGNORE, - constants.P2_IGNORE - ); - expect(result).toEqual("1.1.6"); - }); -}); - -describe("getPublicKey", () => { - it("returns the public key", async () => { - const { client, transport, constants, parseDerivationPath } = - createLedgerClient({ - transport: { - send: jest.fn().mockResolvedValue(createGetPublicKeyResponseMock()), - }, - }); - - const derivationPath = "44'/397'/0'/0'/1'"; - - await client.connect(); - const result = await client.getPublicKey({ - derivationPath, - }); - - expect(transport.send).toHaveBeenCalledWith( - constants.CLA, - constants.INS_GET_PUBLIC_KEY, - constants.P1_IGNORE, - constants.networkId, - parseDerivationPath(derivationPath) - ); - expect(result).toEqual("GF7tLvSzcxX4EtrMFtGvGTb2yUj2DhL8hWzc97BwUkyC"); - }); -}); - -describe("sign", () => { - it("returns the signature", async () => { - const { client, transport, constants } = createLedgerClient({ - transport: { - send: jest.fn().mockResolvedValue(Buffer.from([1, 2, 3])), - }, - }); - - const transaction = createTransactionMock(); - const data = nearAPI.transactions.encodeTransaction(transaction); - - await client.connect(); - const result = await client.sign({ - data, - derivationPath: "44'/397'/0'/0'/1'", - }); - - expect(transport.send).toHaveBeenCalledWith( - constants.CLA, - constants.INS_GET_APP_VERSION, - constants.P1_IGNORE, - constants.P2_IGNORE - ); - expect(transport.send).toHaveBeenCalledWith( - constants.CLA, - constants.INS_SIGN, - constants.P1_IGNORE, - constants.P2_IGNORE, - expect.any(Buffer) - ); - expect(transport.send).toHaveBeenCalledWith( - constants.CLA, - constants.INS_SIGN, - constants.P1_LAST, - constants.P2_IGNORE, - expect.any(Buffer) - ); - expect(transport.send).toHaveBeenCalledTimes(3); - expect(result).toEqual(Buffer.from([1])); - }); -}); - -describe("on", () => { - it("add event to transport", async () => { - const { client, transport } = createLedgerClient(); - - const event = "connect"; - const listener = jest.fn(); - - await client.connect(); - await client.on(event, listener); - - expect(transport.on).toHaveBeenCalledWith(event, listener); - }); -}); - -describe("off", () => { - it("remove event from transport", async () => { - const { client, transport } = createLedgerClient(); - - const event = "connect"; - const listener = jest.fn(); - - await client.connect(); - await client.off(event, listener); - - expect(transport.off).toHaveBeenCalledWith(event, listener); - }); -}); - -describe("setScrambleKey", () => { - it("run setScrambleKey function", async () => { - const { client, transport } = createLedgerClient({ - transport: { - setScrambleKey: jest.fn(), - }, - }); - - const scrambleKey = "NEAR"; - - await client.connect(); - await client.setScrambleKey(scrambleKey); - - expect(transport.setScrambleKey).toHaveBeenCalledWith(scrambleKey); - }); -}); diff --git a/packages/ledger/src/lib/ledger-client.ts b/packages/ledger/src/lib/ledger-client.ts deleted file mode 100644 index fc99690fc..000000000 --- a/packages/ledger/src/lib/ledger-client.ts +++ /dev/null @@ -1,190 +0,0 @@ -import TransportWebHID from "@ledgerhq/hw-transport-webhid"; -import type Transport from "@ledgerhq/hw-transport"; -import * as nearAPI from "near-api-js"; - -// Further reading regarding APDU Ledger API: -// - https://gist.github.com/Wollac/49f0c4e318e42f463b8306298dfb4f4a -// - https://github.com/LedgerHQ/app-near/blob/master/workdir/app-near/src/constants.h - -export const CLA = 0x80; // Always the same for Ledger. -export const INS_SIGN = 0x02; // Sign -export const INS_GET_PUBLIC_KEY = 0x04; // Get Public Key -export const INS_GET_APP_VERSION = 0x06; // Get App Version -export const P1_LAST = 0x80; // End of Bytes to Sign (finalize) -export const P1_MORE = 0x00; // More bytes coming -export const P1_IGNORE = 0x00; -export const P2_IGNORE = 0x00; - -// Converts BIP32-compliant derivation path to a Buffer. -// More info here: https://github.com/LedgerHQ/ledger-live-common/blob/master/docs/derivation.md -export function parseDerivationPath(derivationPath: string) { - const parts = derivationPath.split("/"); - - return Buffer.concat( - parts - .map((part) => { - return part.endsWith(`'`) - ? Math.abs(parseInt(part.slice(0, -1))) | 0x80000000 - : Math.abs(parseInt(part)); - }) - .map((i32) => { - return Buffer.from([ - (i32 >> 24) & 0xff, - (i32 >> 16) & 0xff, - (i32 >> 8) & 0xff, - i32 & 0xff, - ]); - }) - ); -} - -// TODO: Understand what this is exactly. What's so special about 87? -export const networkId = "W".charCodeAt(0); - -interface GetPublicKeyParams { - derivationPath: string; -} - -interface SignParams { - data: Uint8Array; - derivationPath: string; -} - -interface EventMap { - disconnect: Error; -} - -export interface Subscription { - remove: () => void; -} - -// Not using TransportWebHID.isSupported as it's chosen to use a Promise... -export const isLedgerSupported = () => { - return !!window.navigator?.hid; -}; - -export class LedgerClient { - private transport: Transport | null = null; - - isConnected = () => { - return Boolean(this.transport); - }; - - connect = async () => { - this.transport = await TransportWebHID.create(); - - const handleDisconnect = () => { - this.transport?.off("disconnect", handleDisconnect); - this.transport = null; - }; - - this.transport.on("disconnect", handleDisconnect); - }; - - disconnect = async () => { - if (!this.transport) { - throw new Error("Device not connected"); - } - - await this.transport.close(); - this.transport = null; - }; - - setScrambleKey = (key: string) => { - if (!this.transport) { - throw new Error("Device not connected"); - } - - this.transport.setScrambleKey(key); - }; - - on = ( - event: Event, - callback: (data: EventMap[Event]) => void - ): Subscription => { - if (!this.transport) { - throw new Error("Device not connected"); - } - - this.transport.on(event, callback); - - return { - remove: () => this.transport?.off(event, callback), - }; - }; - - off = (event: keyof EventMap, callback: () => void) => { - if (!this.transport) { - throw new Error("Device not connected"); - } - - this.transport.off(event, callback); - }; - - getVersion = async () => { - if (!this.transport) { - throw new Error("Device not connected"); - } - - const res = await this.transport.send( - CLA, - INS_GET_APP_VERSION, - P1_IGNORE, - P2_IGNORE - ); - - const [major, minor, patch] = Array.from(res); - - return `${major}.${minor}.${patch}`; - }; - - getPublicKey = async ({ derivationPath }: GetPublicKeyParams) => { - if (!this.transport) { - throw new Error("Device not connected"); - } - - const res = await this.transport.send( - CLA, - INS_GET_PUBLIC_KEY, - P2_IGNORE, - networkId, - parseDerivationPath(derivationPath) - ); - - return nearAPI.utils.serialize.base_encode(res.subarray(0, -2)); - }; - - sign = async ({ data, derivationPath }: SignParams) => { - if (!this.transport) { - throw new Error("Device not connected"); - } - - // NOTE: getVersion call resets state to avoid starting from partially filled buffer - await this.getVersion(); - - // 128 - 5 service bytes - const CHUNK_SIZE = 123; - const allData = Buffer.concat([ - parseDerivationPath(derivationPath), - Buffer.from(data), - ]); - - for (let offset = 0; offset < allData.length; offset += CHUNK_SIZE) { - const isLastChunk = offset + CHUNK_SIZE >= allData.length; - - const response = await this.transport.send( - CLA, - INS_SIGN, - isLastChunk ? P1_LAST : P1_MORE, - P2_IGNORE, - Buffer.from(allData.subarray(offset, offset + CHUNK_SIZE)) - ); - - if (isLastChunk) { - return Buffer.from(response.subarray(0, -2)); - } - } - - throw new Error("Invalid data or derivation path"); - }; -} diff --git a/packages/ledger/src/lib/ledger.spec.ts b/packages/ledger/src/lib/ledger.spec.ts deleted file mode 100644 index 5004e2bf4..000000000 --- a/packages/ledger/src/lib/ledger.spec.ts +++ /dev/null @@ -1,191 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries */ -import { mock } from "jest-mock-extended"; - -import { mockWallet } from "../../../core/src/lib/testUtils"; -import type { HardwareWallet, Transaction } from "../../../core/src/lib/wallet"; -import type { ProviderService } from "../../../core/src/lib/services"; -import type { LedgerClient } from "./ledger-client"; - -const createLedgerWallet = async () => { - const publicKey = "GF7tLvSzcxX4EtrMFtGvGTb2yUj2DhL8hWzc97BwUkyC"; - - const ledgerClient = mock({ - getPublicKey: jest.fn().mockResolvedValue(publicKey), - isConnected: jest.fn(() => false), - sign: jest - .fn() - .mockResolvedValue( - Buffer.from([ - 86, 38, 222, 143, 115, 251, 107, 14, 115, 59, 92, 98, 66, 174, 173, - 124, 209, 189, 191, 180, 89, 25, 125, 254, 97, 240, 178, 98, 65, 70, - 238, 108, 105, 122, 165, 249, 193, 70, 118, 194, 126, 218, 117, 100, - 250, 124, 202, 161, 173, 12, 232, 146, 105, 194, 138, 35, 207, 53, 84, - 218, 45, 220, 10, 4, - ]) - ), - }); - - jest.mock("./ledger-client", () => { - const module = jest.requireActual("./ledger-client"); - - return { - ...module, - isLedgerSupported: jest.fn().mockReturnValue(true), - LedgerClient: jest.fn().mockImplementation(() => ledgerClient), - }; - }); - - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { setupLedger } = require("./ledger"); - - const provider = mock(); - const { wallet, storage } = await mockWallet(setupLedger(), { - provider, - }); - - provider.viewAccessKey.mockResolvedValue({ - nonce: BigInt(0), - permission: "FullAccess", - block_height: 0, - block_hash: "block_hash", - }); - - return { - nearApiJs: require("near-api-js"), - wallet, - storage, - ledgerClient, - publicKey, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("connect", () => { - it("signs in", async () => { - const accountId = "amirsaran.testnet"; - const derivationPath = "44'/397'/0'/0'/1'"; - const { wallet, storage, publicKey } = await createLedgerWallet(); - await wallet.signIn({ - accounts: [{ derivationPath, publicKey, accountId }], - contractId: "guest-book.testnet", - }); - - expect(storage.setItem).toHaveBeenCalledWith( - "near-wallet-selector:ledger:accounts", - JSON.stringify([ - { - accountId, - derivationPath, - publicKey, - }, - ]) - ); - }); -}); - -describe("getAccounts", () => { - it("returns account objects", async () => { - const accountId = "amirsaran.testnet"; - const derivationPath = "44'/397'/0'/0'/1'"; - const { wallet, publicKey } = await createLedgerWallet(); - await wallet.signIn({ - accounts: [{ derivationPath, publicKey, accountId }], - contractId: "guest-book.testnet", - }); - const result = await wallet.getAccounts(); - expect(result).toEqual([{ accountId, publicKey: "ed25519:" + publicKey }]); - }); - it("returns empty list because not connected", async () => { - const { wallet } = await createLedgerWallet(); - const result = await wallet.getAccounts(); - expect(result).toEqual([]); - }); -}); - -describe("signAndSendTransaction", () => { - it("signs and sends transaction", async () => { - const accountId = "amirsaran.testnet"; - const derivationPath = "44'/397'/0'/0'/1'"; - const { wallet, ledgerClient, publicKey } = await createLedgerWallet(); - await wallet.signIn({ - accounts: [{ derivationPath, publicKey, accountId }], - contractId: "guest-book.testnet", - }); - await wallet.signAndSendTransaction({ - signerId: "amirsaran.testnet", - receiverId: "guest-book.testnet", - actions: [], - }); - expect(ledgerClient.sign).toHaveBeenCalled(); - }); -}); - -describe("signAndSendTransactions", () => { - it("signs and sends only one transaction", async () => { - const accountId = "amirsaran.testnet"; - const derivationPath = "44'/397'/0'/0'/1'"; - const { wallet, ledgerClient, publicKey } = await createLedgerWallet(); - await wallet.signIn({ - accounts: [{ derivationPath, publicKey, accountId }], - contractId: "guest-book.testnet", - }); - const transactions: Array = [ - { - signerId: "amirsaran.testnet", - receiverId: "guest-book.testnet", - actions: [], - }, - ]; - const result = await wallet.signAndSendTransactions({ - transactions: transactions, - }); - expect(ledgerClient.sign).toHaveBeenCalled(); - expect(result.length).toEqual(transactions.length); - }); - - it("signs and sends multiple transactions", async () => { - const accountId = "amirsaran.testnet"; - const derivationPath = "44'/397'/0'/0'/1'"; - const { wallet, ledgerClient, publicKey } = await createLedgerWallet(); - await wallet.signIn({ - accounts: [{ derivationPath, publicKey, accountId }], - contractId: "guest-book.testnet", - }); - const transactions: Array = [ - { - signerId: "amirsaran.testnet", - receiverId: "guest-book.testnet", - actions: [], - }, - { - signerId: "amirsaran.testnet", - receiverId: "guest-book.testnet", - actions: [], - }, - ]; - const result = await wallet.signAndSendTransactions({ - transactions, - }); - expect(ledgerClient.sign).toHaveBeenCalled(); - expect(result.length).toEqual(transactions.length); - }); -}); - -describe("getPublicKey", () => { - it("returns public key", async () => { - const accountId = "amirsaran.testnet"; - const derivationPath = "44'/397'/0'/0'/1'"; - const { wallet, publicKey } = await createLedgerWallet(); - await wallet.signIn({ - accounts: [{ derivationPath, publicKey, accountId }], - contractId: "guest-book.testnet", - }); - const publicKeyResponse = await wallet.getPublicKey(derivationPath); - expect(publicKeyResponse).toBe( - "GF7tLvSzcxX4EtrMFtGvGTb2yUj2DhL8hWzc97BwUkyC" - ); - }); -}); diff --git a/packages/ledger/src/lib/ledger.ts b/packages/ledger/src/lib/ledger.ts deleted file mode 100644 index 69fb7b86a..000000000 --- a/packages/ledger/src/lib/ledger.ts +++ /dev/null @@ -1,308 +0,0 @@ -import { isMobile } from "is-mobile"; -import { signTransactions } from "@near-wallet-selector/wallet-utils"; -import type { - WalletModuleFactory, - WalletBehaviourFactory, - JsonStorageService, - Account, - HardwareWallet, - Transaction, - Optional, -} from "@near-wallet-selector/core"; -import { getActiveAccount } from "@near-wallet-selector/core"; - -import { isLedgerSupported, LedgerClient } from "./ledger-client"; -import type { Subscription } from "./ledger-client"; -import type { Signer } from "near-api-js"; -import * as nearAPI from "near-api-js"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; -import icon from "./icon"; - -interface LedgerAccount extends Account { - derivationPath: string; - publicKey: string; -} - -interface ValidateAccessKeyParams { - accountId: string; - publicKey: string; -} - -interface LedgerState { - client: LedgerClient; - accounts: Array; - subscriptions: Array; -} - -export interface LedgerParams { - iconUrl?: string; - deprecated?: boolean; -} - -export const STORAGE_ACCOUNTS = "accounts"; - -const setupLedgerState = async ( - storage: JsonStorageService -): Promise => { - const accounts = await storage.getItem>( - STORAGE_ACCOUNTS - ); - - return { - client: new LedgerClient(), - subscriptions: [], - accounts: accounts || [], - }; -}; - -const Ledger: WalletBehaviourFactory = async ({ - options, - store, - provider, - logger, - storage, - metadata, -}) => { - const _state = await setupLedgerState(storage); - - const signer: Signer = { - createKey: () => { - throw new Error("Not implemented"); - }, - getPublicKey: async (accountId) => { - const account = _state.accounts.find((a) => a.accountId === accountId); - - if (!account) { - throw new Error("Failed to find public key for account"); - } - - return nearAPI.utils.PublicKey.from(account.publicKey); - }, - signMessage: async (message, accountId) => { - const account = _state.accounts.find((a) => a.accountId === accountId); - - if (!account) { - throw new Error("Failed to find account for signing"); - } - - const signature = await _state.client.sign({ - data: message, - derivationPath: account.derivationPath, - }); - - return { - signature, - publicKey: nearAPI.utils.PublicKey.from(account.publicKey), - }; - }, - }; - - const getAccounts = (): Array => { - return _state.accounts.map((x) => ({ - accountId: x.accountId, - publicKey: "ed25519:" + x.publicKey, - })); - }; - - const cleanup = () => { - _state.subscriptions.forEach((subscription) => subscription.remove()); - - _state.subscriptions = []; - _state.accounts = []; - - storage.removeItem(STORAGE_ACCOUNTS); - }; - - const signOut = async () => { - if (_state.client.isConnected()) { - await _state.client.disconnect().catch((err) => { - logger.log("Failed to disconnect device"); - logger.error(err); - }); - } - - cleanup(); - }; - - const connectLedgerDevice = async () => { - if (_state.client.isConnected()) { - return; - } - - await _state.client.connect(); - }; - - const validateAccessKey = ({ - accountId, - publicKey, - }: ValidateAccessKeyParams) => { - logger.log("validateAccessKey", { accountId, publicKey }); - - return provider.viewAccessKey({ accountId, publicKey }).then( - (accessKey) => { - logger.log("validateAccessKey:accessKey", { accessKey }); - - if (accessKey.permission !== "FullAccess") { - throw new Error("Public key requires 'FullAccess' permission"); - } - - return accessKey; - }, - (err) => { - if (err.type === "AccessKeyDoesNotExist") { - return null; - } - - throw err; - } - ); - }; - - const transformTransactions = ( - transactions: Array> - ): Array => { - const { contract } = store.getState(); - - if (!contract) { - throw new Error("Wallet not signed in"); - } - - const account = getActiveAccount(store.getState()); - - if (!account) { - throw new Error("No active account"); - } - - return transactions.map((transaction) => { - return { - signerId: transaction.signerId || account.accountId, - receiverId: transaction.receiverId || contract.contractId, - actions: transaction.actions, - }; - }); - }; - - return { - async signIn({ accounts }) { - const existingAccounts = getAccounts(); - - if (existingAccounts.length) { - return existingAccounts; - } - - const ledgerAccounts: Array = []; - - for (let i = 0; i < accounts.length; i++) { - const { derivationPath, accountId, publicKey } = accounts[i]; - - const accessKey = await validateAccessKey({ accountId, publicKey }); - - if (!accessKey) { - throw new Error( - `Public key is not registered with the account '${accountId}'.` - ); - } - - ledgerAccounts.push({ - accountId, - derivationPath, - publicKey, - }); - } - - await storage.setItem(STORAGE_ACCOUNTS, ledgerAccounts); - _state.accounts = ledgerAccounts; - - return getAccounts(); - }, - - signOut, - - async getAccounts() { - return getAccounts(); - }, - - async verifyOwner({ message }) { - logger.log("Ledger:verifyOwner", { message }); - - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - - if (!_state.accounts.length) { - throw new Error("Wallet not signed in"); - } - - // Note: Connection must be triggered by user interaction. - await connectLedgerDevice(); - - const signedTransactions = await signTransactions( - transformTransactions([{ signerId, receiverId, actions }]), - signer, - options.network - ); - - return provider.sendTransaction(signedTransactions[0]); - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - if (!_state.accounts.length) { - throw new Error("Wallet not signed in"); - } - - // Note: Connection must be triggered by user interaction. - await connectLedgerDevice(); - - const signedTransactions = await signTransactions( - transformTransactions(transactions), - signer, - options.network - ); - - const results: Array = []; - - for (let i = 0; i < signedTransactions.length; i++) { - results.push(await provider.sendTransaction(signedTransactions[i])); - } - - return results; - }, - async getPublicKey(derivationPath: string) { - await connectLedgerDevice(); - - return await _state.client.getPublicKey({ derivationPath }); - }, - }; -}; - -export function setupLedger({ - iconUrl = icon, - deprecated = false, -}: LedgerParams = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - const supported = isLedgerSupported(); - - if (mobile) { - return null; - } - - return { - id: "ledger", - type: "hardware", - metadata: { - name: "Ledger", - description: - "Protect crypto assets with the most popular hardware wallet.", - iconUrl, - deprecated, - available: supported, - }, - init: Ledger, - }; - }; -} diff --git a/packages/ledger/tsconfig.json b/packages/ledger/tsconfig.json deleted file mode 100644 index 3aaed7519..000000000 --- a/packages/ledger/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/ledger/tsconfig.lib.json b/packages/ledger/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/ledger/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/ledger/tsconfig.spec.json b/packages/ledger/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/ledger/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/math-wallet/.babelrc b/packages/math-wallet/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/math-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/math-wallet/.eslintrc.json b/packages/math-wallet/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/math-wallet/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/math-wallet/README.md b/packages/math-wallet/README.md deleted file mode 100644 index 842ecad57..000000000 --- a/packages/math-wallet/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# @near-wallet-selector/math-wallet - -This is the [Math Wallet](https://chrome.google.com/webstore/detail/math-wallet/afbcbjpbpfadlkmhmclhkeeodmamcflc) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` - -```bash -# Using Yarn -yarn add @near-wallet-selector/math-wallet - -# Using NPM. -npm install @near-wallet-selector/math-wallet -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupMathWallet } from "@near-wallet-selector/math-wallet"; - -// Math Wallet for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const mathWallet = setupMathWallet({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [mathWallet], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/math-wallet-icon.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupMathWallet } from "@near-wallet-selector/math-wallet"; -import mathWalletIconUrl from "@near-wallet-selector/math-wallet/assets/math-wallet-icon.png"; - -const mathWallet = setupMathWallet({ - iconUrl: mathWalletIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/math-wallet/assets/math-wallet-icon.png b/packages/math-wallet/assets/math-wallet-icon.png deleted file mode 100644 index 7ea6c18b1..000000000 Binary files a/packages/math-wallet/assets/math-wallet-icon.png and /dev/null differ diff --git a/packages/math-wallet/jest.config.js b/packages/math-wallet/jest.config.js deleted file mode 100644 index fbf08d242..000000000 --- a/packages/math-wallet/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "math-wallet", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/math-wallet", -}; diff --git a/packages/math-wallet/jest.config.ts b/packages/math-wallet/jest.config.ts deleted file mode 100644 index 14ac45118..000000000 --- a/packages/math-wallet/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "math-wallet", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/math-wallet", -}; diff --git a/packages/math-wallet/package.json b/packages/math-wallet/package.json deleted file mode 100644 index 6e0726b16..000000000 --- a/packages/math-wallet/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/math-wallet", - "version": "8.9.13", - "description": "Math wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "math wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/math-wallet" -} diff --git a/packages/math-wallet/project.json b/packages/math-wallet/project.json deleted file mode 100644 index e771c2667..000000000 --- a/packages/math-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "math-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/math-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/math-wallet", - "tsConfig": "packages/math-wallet/tsconfig.lib.json", - "project": "packages/math-wallet/package.json", - "entryFile": "packages/math-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/math-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/math-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/math-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/math-wallet"], - "options": { - "jestConfig": "packages/math-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/math-wallet/src/index.ts b/packages/math-wallet/src/index.ts deleted file mode 100644 index b90059559..000000000 --- a/packages/math-wallet/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupMathWallet } from "./lib/math-wallet"; -export type { MathWalletParams } from "./lib/math-wallet"; diff --git a/packages/math-wallet/src/lib/icon.ts b/packages/math-wallet/src/lib/icon.ts deleted file mode 100644 index 0401b98f9..000000000 --- a/packages/math-wallet/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/math-wallet/src/lib/injected-math-wallet.ts b/packages/math-wallet/src/lib/injected-math-wallet.ts deleted file mode 100644 index 75016e867..000000000 --- a/packages/math-wallet/src/lib/injected-math-wallet.ts +++ /dev/null @@ -1,38 +0,0 @@ -import type { Signer } from "near-api-js/lib/signer"; - -interface LoginParams { - contractId?: string; - publicKey?: string; -} - -export interface MathAccount { - name: string; - accountId: string; - publicKey: string; - permission: string; - network: string; -} - -interface MathNetwork { - id: string; - name: string; - blockchain: string; - chainId: string; - nodeAddress: string; - nodeAddress2: string; - nodeAddress3: string; - enable: boolean; - custom: boolean; - extra: string; -} - -export type MathSigner = Signer & { - account: MathAccount | null; - network: MathNetwork; -}; - -export interface InjectedMathWallet { - signer: MathSigner; - login: (param: LoginParams) => Promise; - logout: () => Promise; -} diff --git a/packages/math-wallet/src/lib/math-wallet.spec.ts b/packages/math-wallet/src/lib/math-wallet.spec.ts deleted file mode 100644 index 59f200182..000000000 --- a/packages/math-wallet/src/lib/math-wallet.spec.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries */ -import { mock } from "jest-mock-extended"; -import { mockWallet } from "../../../core/src/lib/testUtils"; - -import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; -import type { InjectedWallet } from "../../../core/src/lib/wallet"; -import { setupMathWallet } from "./math-wallet"; -import type { MathAccount } from "./injected-math-wallet"; -import type { MathSigner } from "./injected-math-wallet"; - -const accountId = "amirsaran.testnet"; -const publicKey = "GF7tLvSzcxX4EtrMFtGvGTb2yUj2DhL8hWzc97BwUkyC"; - -const mockMathWalletOnWindow = () => { - window.nearWalletApi = { - signer: mock({ - createKey: jest.fn(), - signMessage: jest.fn().mockReturnValue({ - signature: Buffer.from([ - 86, 38, 222, 143, 115, 251, 107, 14, 115, 59, 92, 98, 66, 174, 173, - 124, 209, 189, 191, 180, 89, 25, 125, 254, 97, 240, 178, 98, 65, 70, - 238, 108, 105, 122, 165, 249, 193, 70, 118, 194, 126, 218, 117, 100, - 250, 124, 202, 161, 173, 12, 232, 146, 105, 194, 138, 35, 207, 53, 84, - 218, 45, 220, 10, 4, - ]), - publicKey, - }), - getPublicKey: jest.fn().mockReturnValue(publicKey), - }), - login: jest.fn().mockReturnValue(mock()), - logout: jest.fn().mockReturnValue(true), - }; - - return window.nearWalletApi; -}; - -const createMathWallet = async (deps: MockWalletDependencies = {}) => { - const injectedMathWallet = mockMathWalletOnWindow(); - const { wallet } = await mockWallet(setupMathWallet(), deps); - - return { - wallet, - injectedMathWallet, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("signIn", () => { - it("sign into math wallet", async () => { - const { wallet, injectedMathWallet } = await createMathWallet(); - - injectedMathWallet.signer.account = null; - await wallet.signIn({ contractId: "test.testnet" }); - - expect(injectedMathWallet.login).toHaveBeenCalled(); - }); -}); - -describe("signOut", () => { - it("sign out of math wallet", async () => { - const { wallet, injectedMathWallet } = await createMathWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signOut(); - - expect(injectedMathWallet.logout).toHaveBeenCalled(); - }); -}); - -describe("getAccounts", () => { - it("returns array of accounts", async () => { - const { wallet, injectedMathWallet } = await createMathWallet(); - - injectedMathWallet.signer.account = { - name: "", - accountId, - publicKey, - permission: "", - network: "testnet", - }; - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.getAccounts(); - - expect(result).toEqual([{ accountId, publicKey }]); - }); -}); - -describe("signAndSendTransaction", () => { - it("sign transaction in math wallet", async () => { - const { wallet, injectedMathWallet } = await createMathWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signAndSendTransaction({ - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }); - - expect(injectedMathWallet.signer.signMessage).toHaveBeenCalled(); - }); -}); - -describe("signAndSendTransactions", () => { - it("sign transactions in math wallet", async () => { - const { wallet, injectedMathWallet } = await createMathWallet(); - - const transactions = [ - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, - ]; - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.signAndSendTransactions({ - transactions, - }); - - expect(injectedMathWallet.signer.signMessage).toHaveBeenCalled(); - expect(result.length).toEqual(transactions.length); - }); -}); diff --git a/packages/math-wallet/src/lib/math-wallet.ts b/packages/math-wallet/src/lib/math-wallet.ts deleted file mode 100644 index 5dc75e7d0..000000000 --- a/packages/math-wallet/src/lib/math-wallet.ts +++ /dev/null @@ -1,214 +0,0 @@ -import { isMobile } from "is-mobile"; -import type { - WalletModuleFactory, - WalletBehaviourFactory, - InjectedWallet, - Account, - Optional, - Transaction, -} from "@near-wallet-selector/core"; -import { getActiveAccount } from "@near-wallet-selector/core"; -import type { InjectedMathWallet } from "./injected-math-wallet"; -import { signTransactions } from "@near-wallet-selector/wallet-utils"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; -import icon from "./icon"; - -declare global { - interface Window { - nearWalletApi: InjectedMathWallet | undefined; - } -} - -export interface MathWalletParams { - iconUrl?: string; - deprecated?: boolean; -} - -interface MathWalletState { - wallet: InjectedMathWallet; -} - -const isInstalled = () => { - return !!window.nearWalletApi; -}; - -const setupMathWalletState = (): MathWalletState => { - const wallet = window.nearWalletApi!; - - return { - wallet, - }; -}; - -const MathWallet: WalletBehaviourFactory = async ({ - metadata, - options, - store, - provider, - logger, -}) => { - const _state = setupMathWalletState(); - - const getAccounts = async (): Promise> => { - const account = _state.wallet.signer.account; - - if (!account) { - return []; - } - - return [ - { - accountId: account.accountId, - publicKey: account.publicKey, - }, - ]; - }; - - const transformTransactions = ( - transactions: Array> - ): Array => { - const { contract } = store.getState(); - - if (!contract) { - throw new Error("Wallet not signed in"); - } - - const account = getActiveAccount(store.getState()); - - if (!account) { - throw new Error("No active account"); - } - - return transactions.map((transaction) => { - return { - signerId: transaction.signerId || account.accountId, - receiverId: transaction.receiverId || contract.contractId, - actions: transaction.actions, - }; - }); - }; - - return { - async signIn({ contractId }) { - const existingAccounts = await getAccounts(); - - if (existingAccounts.length) { - return existingAccounts; - } - - await _state.wallet.login({ contractId }); - - return getAccounts(); - }, - - async signOut() { - // Ignore if unsuccessful (returns false). - await _state.wallet.logout(); - }, - - async getAccounts() { - return getAccounts(); - }, - - async verifyOwner({ message }) { - logger.log("MathWallet:verifyOwner", { message }); - - const account = getActiveAccount(store.getState()); - - if (!account) { - throw new Error("No active account"); - } - - const accountId = account.accountId; - const pubKey = await _state.wallet.signer.getPublicKey(accountId); - const block = await provider.block({ finality: "final" }); - - const data = { - accountId, - message, - blockId: block.header.hash, - publicKey: Buffer.from(pubKey.data).toString("base64"), - keyType: pubKey.keyType, - }; - const encoded = JSON.stringify(data); - - // Note: Math Wallet currently hangs when calling signMessage. - throw new Error(`Method not supported by ${metadata.name}`); - - const signed = await _state.wallet.signer.signMessage( - new Uint8Array(Buffer.from(encoded)), - accountId, - options.network.networkId - ); - - return { - ...data, - signature: Buffer.from(signed.signature).toString("base64"), - keyType: signed.publicKey.keyType, - }; - }, - - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - const signedTransactions = await signTransactions( - transformTransactions([{ signerId, receiverId, actions }]), - _state.wallet.signer, - options.network - ); - - return provider.sendTransaction(signedTransactions[0]); - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - const signedTransactions = await signTransactions( - transformTransactions(transactions), - _state.wallet.signer, - options.network - ); - - logger.log( - "signAndSendTransactions:signedTransactions", - signedTransactions - ); - - const results: Array = []; - - for (let i = 0; i < signedTransactions.length; i++) { - results.push(await provider.sendTransaction(signedTransactions[i])); - } - - return results; - }, - }; -}; - -export const setupMathWallet = ({ - iconUrl = icon, - deprecated = false, -}: MathWalletParams = {}): WalletModuleFactory => { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - - const installed = await isInstalled(); - - return { - id: "math-wallet", - type: "injected", - metadata: { - name: "Math Wallet", - description: "World's First Insured Crypto Wallet.", - iconUrl, - downloadUrl: - "https://chrome.google.com/webstore/detail/math-wallet/afbcbjpbpfadlkmhmclhkeeodmamcflc", - deprecated, - available: installed, - }, - init: MathWallet, - }; - }; -}; diff --git a/packages/math-wallet/tsconfig.json b/packages/math-wallet/tsconfig.json deleted file mode 100644 index 6532eb213..000000000 --- a/packages/math-wallet/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} \ No newline at end of file diff --git a/packages/math-wallet/tsconfig.lib.json b/packages/math-wallet/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/math-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/math-wallet/tsconfig.spec.json b/packages/math-wallet/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/math-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/meteor-wallet/dist/cjs/core/src/index.d.ts b/packages/meteor-wallet/dist/cjs/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/index.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/index.js b/packages/meteor-wallet/dist/cjs/core/src/index.js new file mode 100644 index 000000000..cfb828bf8 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = exports.allowOnlyLanguage = exports.translate = exports.serializeNep413 = exports.verifySignature = exports.verifyFullKeyBelongsToUser = exports.isCurrentBrowserSupported = exports.getActiveAccount = exports.waitFor = exports.EventEmitter = exports.setupWalletSelector = void 0; +var wallet_selector_js_1 = require("./lib/wallet-selector.js"); +Object.defineProperty(exports, "setupWalletSelector", { enumerable: true, get: function () { return wallet_selector_js_1.setupWalletSelector; } }); +var services_1 = require("./lib/services"); +Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return services_1.EventEmitter; } }); +var helpers_1 = require("./lib/helpers"); +Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return helpers_1.waitFor; } }); +Object.defineProperty(exports, "getActiveAccount", { enumerable: true, get: function () { return helpers_1.getActiveAccount; } }); +Object.defineProperty(exports, "isCurrentBrowserSupported", { enumerable: true, get: function () { return helpers_1.isCurrentBrowserSupported; } }); +Object.defineProperty(exports, "verifyFullKeyBelongsToUser", { enumerable: true, get: function () { return helpers_1.verifyFullKeyBelongsToUser; } }); +Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return helpers_1.verifySignature; } }); +Object.defineProperty(exports, "serializeNep413", { enumerable: true, get: function () { return helpers_1.serializeNep413; } }); +var translate_1 = require("./lib/translate/translate"); +Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } }); +Object.defineProperty(exports, "allowOnlyLanguage", { enumerable: true, get: function () { return translate_1.allowOnlyLanguage; } }); +var testUtils_1 = require("./lib/testUtils"); +Object.defineProperty(exports, "mockWallet", { enumerable: true, get: function () { return testUtils_1.mockWallet; } }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/constants.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/constants.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/constants.js b/packages/meteor-wallet/dist/cjs/core/src/lib/constants.js new file mode 100644 index 000000000..50899a58d --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PENDING_SELECTED_WALLET_ID = exports.SELECTED_WALLET_ID = exports.PENDING_CONTRACT = exports.CONTRACT = exports.REMEMBER_RECENT_WALLETS_STATE = exports.REMEMBER_RECENT_WALLETS = exports.RECENTLY_SIGNED_IN_WALLETS = exports.PACKAGE_NAME = void 0; +exports.PACKAGE_NAME = "near-wallet-selector"; +exports.RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +exports.REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +exports.REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +exports.CONTRACT = "contract"; +exports.PENDING_CONTRACT = "contract:pending"; +exports.SELECTED_WALLET_ID = `selectedWalletId`; +exports.PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/detect-browser.js b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..a03402ab2 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,74 @@ +"use strict"; +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCurrentBrowserSupported = void 0; +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; +exports.isCurrentBrowserSupported = isCurrentBrowserSupported; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.js b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..0da744cc5 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActiveAccount = void 0; +const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; +exports.getActiveAccount = getActiveAccount; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/index.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/index.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/index.js b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/index.js new file mode 100644 index 000000000..eb80ab43a --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./waitFor"), exports); +__exportStar(require("./getActiveAccount"), exports); +__exportStar(require("./detect-browser"), exports); +__exportStar(require("./verify-signature/verify-signature"), exports); +__exportStar(require("./verify-signature/payload"), exports); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.js b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..5655fd8cd --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeNep413 = exports.payloadSchema = exports.createPayload = void 0; +const borsh_1 = require("borsh"); +const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +exports.createPayload = createPayload; +exports.payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +const serializeNep413 = (signMessageParams) => { + const payload = (0, exports.createPayload)(signMessageParams); + return Buffer.from((0, borsh_1.serialize)(exports.payloadSchema, payload)); +}; +exports.serializeNep413 = serializeNep413; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..5d00297d2 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyFullKeyBelongsToUser = exports.verifySignature = void 0; +const borsh_1 = require("borsh"); +const js_sha256_1 = require("js-sha256"); +const payload_1 = require("./payload"); +const crypto_1 = require("../../../../../../../near-api-js/packages/crypto"); +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +const providers_1 = require("@near-js/providers"); +const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = (0, borsh_1.serialize)(payload_1.payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(js_sha256_1.sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = (0, crypto_1.publicKeyFrom)(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +exports.verifySignature = verifySignature; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new providers_1.JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; +exports.verifyFullKeyBelongsToUser = verifyFullKeyBelongsToUser; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/waitFor.js b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..8d37d4cef --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/helpers/waitFor.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitFor = void 0; +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; +exports.waitFor = waitFor; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/ar.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/bg.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/en.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/es.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/hi.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/hr.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/ko.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/mk.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/sl.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/sr.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/vi.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/locale/zh.json b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/options.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/options.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/options.js b/packages/meteor-wallet/dist/cjs/core/src/lib/options.js new file mode 100644 index 000000000..587fab7eb --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/options.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveOptions = exports.resolveNetwork = exports.getNetworkPreset = void 0; +const services_1 = require("./services"); +const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +exports.getNetworkPreset = getNetworkPreset; +const resolveNetwork = (network) => { + return typeof network === "string" ? (0, exports.getNetworkPreset)(network) : network; +}; +exports.resolveNetwork = resolveNetwork; +const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: (0, exports.resolveNetwork)(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new services_1.WebStorageService(), + }; +}; +exports.resolveOptions = resolveOptions; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/options.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/options.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/options.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/options.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/options.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..1129f4fc6 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventEmitter = void 0; +const events_1 = require("events"); +class EventEmitter { + emitter = new events_1.EventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} +exports.EventEmitter = EventEmitter; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/index.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/index.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/index.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/index.js new file mode 100644 index 000000000..771f7ca4c --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./provider/provider.service"), exports); +__exportStar(require("./provider/provider.service.types"), exports); +__exportStar(require("./storage/storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service"), exports); +__exportStar(require("./storage/web-storage.service"), exports); +__exportStar(require("./logger/logger.service"), exports); +__exportStar(require("./logger/logger.service.types"), exports); +__exportStar(require("./wallet-modules/wallet-modules.service"), exports); +__exportStar(require("./event-emitter/event-emitter.service"), exports); +__exportStar(require("./event-emitter/event-emitter.types"), exports); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..f2365f6b4 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = exports.Logger = void 0; +class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +exports.Logger = Logger; +exports.logger = new Logger(); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..7798a5f3f --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Provider = void 0; +const providers_1 = require("@near-js/providers"); +class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new providers_1.FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new providers_1.JsonRpcProvider({ url })) + : []; + } +} +exports.Provider = Provider; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..1d1ed0bf1 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonStorage = void 0; +const KEY_DELIMITER = ":"; +class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} +exports.JsonStorage = JsonStorage; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..b1b3430c7 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebStorageService = void 0; +class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} +exports.WebStorageService = WebStorageService; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..a27acfb1e --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,325 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletModules = void 0; +const event_emitter_service_1 = require("../event-emitter/event-emitter.service"); +const logger_service_1 = require("../logger/logger.service"); +const constants_1 = require("../../constants"); +const json_storage_service_1 = require("../storage/json-storage.service"); +class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger_service_1.logger.log(`Failed to validate ${wallet.id} during setup`); + logger_service_1.logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(constants_1.PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(constants_1.PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(constants_1.PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(constants_1.PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger_service_1.logger.log("Failed to sign out existing wallet"); + logger_service_1.logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(constants_1.RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger_service_1.logger.log(`Failed to sign out ${wallet.id}`); + logger_service_1.logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(constants_1.PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(constants_1.PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new event_emitter_service_1.EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new logger_service_1.Logger(module.id), + storage: new json_storage_service_1.JsonStorage(this.storage, [constants_1.PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger_service_1.logger.log("Failed to setup module"); + logger_service_1.logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger_service_1.logger.error("Failed to sign in to wallet. " + err); + } + } + } +} +exports.WalletModules = WalletModules; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/store.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/store.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/store.js b/packages/meteor-wallet/dist/cjs/core/src/lib/store.js new file mode 100644 index 000000000..fc078e464 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/store.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStore = void 0; +const rxjs_1 = require("rxjs"); +const services_1 = require("./services"); +const constants_1 = require("./constants"); +const reducer = (state, action) => { + services_1.logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? constants_1.REMEMBER_RECENT_WALLETS_STATE.DISABLED + : constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +const createStore = async (storage) => { + const jsonStorage = new services_1.JsonStorage(storage, constants_1.PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(constants_1.CONTRACT), + selectedWalletId: await jsonStorage.getItem(constants_1.SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new rxjs_1.BehaviorSubject(initialState); + const actions$ = new rxjs_1.Subject(); + actions$.pipe((0, rxjs_1.scan)(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, constants_1.SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, constants_1.CONTRACT, "contract"); + syncStorage(prevState, state, constants_1.RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, constants_1.REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; +exports.createStore = createStore; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/store.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/store.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/store.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/store.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/store.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/testUtils.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/testUtils.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/testUtils.js b/packages/meteor-wallet/dist/cjs/core/src/lib/testUtils.js new file mode 100644 index 000000000..5e0cc0df9 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/testUtils.js @@ -0,0 +1,107 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = void 0; +// Remove Jest import +// import * as jest from "jest"; +const jest_mock_extended_1 = require("jest-mock-extended"); +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +const mockWallet = async (factory, deps) => { + const { options, storage } = (0, options_1.resolveOptions)({ + network: (0, options_1.getNetworkPreset)("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const walletModules = new services_1.WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || (0, jest_mock_extended_1.mock)(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +exports.mockWallet = mockWallet; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/translate/translate.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/translate/translate.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/translate/translate.js b/packages/meteor-wallet/dist/cjs/core/src/lib/translate/translate.js new file mode 100644 index 000000000..c5573a87c --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/translate/translate.js @@ -0,0 +1,81 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.translate = exports.allowOnlyLanguage = void 0; +const en_json_1 = __importDefault(require("../locale/en.json")); +const es_json_1 = __importDefault(require("../locale/es.json")); +const zh_json_1 = __importDefault(require("../locale/zh.json")); +const bg_json_1 = __importDefault(require("../locale/bg.json")); +const ko_json_1 = __importDefault(require("../locale/ko.json")); +const vi_json_1 = __importDefault(require("../locale/vi.json")); +const hi_json_1 = __importDefault(require("../locale/hi.json")); +const ar_json_1 = __importDefault(require("../locale/ar.json")); +const hr_json_1 = __importDefault(require("../locale/hr.json")); +const mk_json_1 = __importDefault(require("../locale/mk.json")); +const sl_json_1 = __importDefault(require("../locale/sl.json")); +const sr_json_1 = __importDefault(require("../locale/sr.json")); +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en_json_1.default; + case "es": + return es_json_1.default; + case "zh": + return zh_json_1.default; + case "bg": + return bg_json_1.default; + case "ko": + return ko_json_1.default; + case "vi": + return vi_json_1.default; + case "hi": + return hi_json_1.default; + case "ar": + return ar_json_1.default; + case "hr": + return hr_json_1.default; + case "mk": + return mk_json_1.default; + case "sl": + return sl_json_1.default; + case "sr": + return sr_json_1.default; + default: + return en_json_1.default; + } +}; +let chosenLang; +const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +exports.allowOnlyLanguage = allowOnlyLanguage; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; +exports.translate = translate; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/utils.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/utils.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/utils.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/utils.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/utils.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.js b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..8ffb4cc07 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletSelector = void 0; +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +const setupWalletSelector = async (params) => { + const { options, storage } = (0, options_1.resolveOptions)(params); + services_1.Logger.debug = options.debug; + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const network = await (0, options_1.getNetworkPreset)(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new services_1.WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new services_1.Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; +exports.setupWalletSelector = setupWalletSelector; diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAEhD,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;KAC1B,CAAC;IACF,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,eAAe,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAChE,cAAc,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAC;IAE3B;;;;OAIG;IACH,MAAM,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EACtC,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC;IAE1C;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC;IAEtB;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1C;;OAEG;IACH,wBAAwB,IAAI,IAAI,CAAC;IAEjC;;OAEG;IACH,EAAE,CAAC,SAAS,SAAS,MAAM,oBAAoB,EAC7C,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,KAAK,IAAI,GACzD,YAAY,CAAC;IAEhB;;OAEG;IACH,GAAG,CAAC,SAAS,SAAS,MAAM,oBAAoB,EAC9C,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,KAAK,IAAI,GACzD,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet-selector.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/index.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/index.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/index.js b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/index.js new file mode 100644 index 000000000..d7ee97f6b --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./wallet.types"), exports); +__exportStar(require("./transactions.types"), exports); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/transactions.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/transactions.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/wallet.types.js b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/core/src/lib/wallet/wallet.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/index.d.ts b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/index.d.ts new file mode 100644 index 000000000..45d41c527 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/index.d.ts @@ -0,0 +1,2 @@ +export { setupMeteorWallet } from "./lib/meteor-wallet"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/index.d.ts.map b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/index.d.ts.map new file mode 100644 index 000000000..0c204cca9 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/index.js b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/index.js new file mode 100644 index 000000000..13a060513 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupMeteorWallet = void 0; +var meteor_wallet_1 = require("./lib/meteor-wallet"); +Object.defineProperty(exports, "setupMeteorWallet", { enumerable: true, get: function () { return meteor_wallet_1.setupMeteorWallet; } }); diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/icon.d.ts b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/icon.d.ts new file mode 100644 index 000000000..d82339931 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/png;base64,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"; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/icon.d.ts.map b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/icon.d.ts.map new file mode 100644 index 000000000..41a840f26 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAAo/d"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/icon.js b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/icon.js new file mode 100644 index 000000000..057da9128 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/icon.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = `data:image/png;base64,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`; diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet-types.d.ts b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet-types.d.ts new file mode 100644 index 000000000..9f036a144 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet-types.d.ts @@ -0,0 +1,11 @@ +import type { MeteorWallet as MeteorWalletSdk } from "@meteorwallet/sdk"; +import type { keyStores } from "near-api-js"; +export interface MeteorWalletParams_Injected { + iconUrl?: string; + deprecated?: boolean; +} +export interface MeteorWalletState { + wallet: MeteorWalletSdk; + keyStore: keyStores.BrowserLocalStorageKeyStore; +} +//# sourceMappingURL=meteor-wallet-types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet-types.d.ts.map b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet-types.d.ts.map new file mode 100644 index 000000000..325b964a7 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet-types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"meteor-wallet-types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/meteor-wallet-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC,2BAA2B,CAAC;CACjD"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet-types.js b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet-types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet-types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet.d.ts b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet.d.ts new file mode 100644 index 000000000..bde2828bd --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet.d.ts @@ -0,0 +1,4 @@ +import type { InjectedWallet, WalletModuleFactory } from "@near-wallet-selector/core"; +import type { MeteorWalletParams_Injected } from "./meteor-wallet-types"; +export declare function setupMeteorWallet({ iconUrl, deprecated, }?: MeteorWalletParams_Injected): WalletModuleFactory; +//# sourceMappingURL=meteor-wallet.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet.d.ts.map b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet.d.ts.map new file mode 100644 index 000000000..cee7f612a --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"meteor-wallet.d.ts","sourceRoot":"","sources":["../../../../../src/lib/meteor-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EAGd,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,uBAAuB,CAAC;AA2L/B,wBAAgB,iBAAiB,CAAC,EAChC,OAAc,EACd,UAAkB,GACnB,GAAE,2BAAgC,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAyBxE"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet.js b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet.js new file mode 100644 index 000000000..d09b3086e --- /dev/null +++ b/packages/meteor-wallet/dist/cjs/meteor-wallet/src/lib/meteor-wallet.js @@ -0,0 +1,196 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupMeteorWallet = setupMeteorWallet; +const nearAPI = __importStar(require("near-api-js")); +const sdk_1 = require("@meteorwallet/sdk"); +const icon_1 = __importDefault(require("./icon")); +const setupWalletState = async (params, network) => { + const keyStore = new nearAPI.keyStores.BrowserLocalStorageKeyStore(window.localStorage, "_meteor_wallet"); + const near = await nearAPI.connect({ + keyStore, + ...network, + headers: {}, + }); + const wallet = new sdk_1.MeteorWallet({ near, appKeyPrefix: "near_app" }); + return { + wallet, + keyStore, + }; +}; +const createMeteorWalletInjected = async ({ options, logger, store, params }) => { + const _state = await setupWalletState(params, options.network); + const getAccounts = async () => { + const accountId = _state.wallet.getAccountId(); + const account = _state.wallet.account(); + if (!accountId || !account) { + return []; + } + const publicKey = await account.connection.signer.getPublicKey(account.accountId, options.network.networkId); + return [ + { + accountId, + publicKey: publicKey ? publicKey.toString() : "", + }, + ]; + }; + return { + async signIn({ contractId, methodNames = [] }) { + logger.log("MeteorWallet:signIn", { + contractId, + methodNames, + }); + if (methodNames.length) { + await _state.wallet.requestSignIn({ + methods: methodNames, + type: sdk_1.EMeteorWalletSignInType.SELECTED_METHODS, + contract_id: contractId, + }); + } + else { + await _state.wallet.requestSignIn({ + type: sdk_1.EMeteorWalletSignInType.ALL_METHODS, + contract_id: contractId, + }); + } + const accounts = await getAccounts(); + logger.log("MeteorWallet:signIn", { + contractId, + methodNames, + account: accounts[0], + }); + return accounts; + }, + async signOut() { + if (_state.wallet.isSignedIn()) { + await _state.wallet.signOut(); + } + }, + async isSignedIn() { + if (!_state.wallet) { + return false; + } + return _state.wallet.isSignedIn(); + }, + async getAccounts() { + return getAccounts(); + }, + async verifyOwner({ message }) { + logger.log("MeteorWallet:verifyOwner", { message }); + const response = await _state.wallet.verifyOwner({ + message, + }); + if (response.success) { + return response.payload; + } + else { + throw new Error(`Couldn't verify owner: ${response.message}`); + } + }, + async signMessage({ message, nonce, recipient, state }) { + logger.log("MeteorWallet:signMessage", { + message, + nonce, + recipient, + state, + }); + const accountId = _state.wallet.getAccountId(); + const response = await _state.wallet.signMessage({ + message, + nonce, + recipient, + accountId, + state, + }); + if (response.success) { + return response.payload; + } + else { + throw new Error(`Couldn't sign message owner: ${response.message}`); + } + }, + async signAndSendTransaction({ signerId, receiverId, actions }) { + logger.log("MeteorWallet:signAndSendTransaction", { + signerId, + receiverId, + actions, + }); + const { contract } = store.getState(); + if (!_state.wallet.isSignedIn()) { + throw new Error("Wallet not signed in"); + } + if (!receiverId && !contract) { + throw new Error("No receiver found to send the transaction to"); + } + const account = _state.wallet.account(); + return account["signAndSendTransaction_direct"]({ + receiverId: receiverId ?? contract.contractId, + actions, + }); + }, + async signAndSendTransactions({ transactions }) { + logger.log("MeteorWallet:signAndSendTransactions", { + transactions, + }); + if (!_state.wallet.isSignedIn()) { + throw new Error("Wallet not signed in"); + } + return _state.wallet.requestSignTransactions({ + transactions, + }); + }, + buildImportAccountsUrl() { + return `https://wallet.meteorwallet.app/batch-import?network=${_state.wallet._networkId}`; + }, + }; +}; +function setupMeteorWallet({ iconUrl = icon_1.default, deprecated = false, } = {}) { + return async () => { + return { + id: "meteor-wallet", + type: "injected", + metadata: { + available: true, + name: "Meteor Wallet", + description: "Securely store and stake your NEAR tokens and compatible assets with Meteor.", + iconUrl, + deprecated, + downloadUrl: "https://wallet.meteorwallet.app", + useUrlAccountImport: true, + }, + init: (options) => { + return createMeteorWalletInjected({ + ...options, + params: { + iconUrl, + }, + }); + }, + }; + }; +} diff --git a/packages/meteor-wallet/dist/esm/core/src/index.d.ts b/packages/meteor-wallet/dist/esm/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/index.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/index.js b/packages/meteor-wallet/dist/esm/core/src/index.js new file mode 100644 index 000000000..a545ffa59 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/index.js @@ -0,0 +1,5 @@ +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export { EventEmitter } from "./lib/services"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/constants.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/constants.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/constants.js b/packages/meteor-wallet/dist/esm/core/src/lib/constants.js new file mode 100644 index 000000000..a75f1a50e --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/constants.js @@ -0,0 +1,11 @@ +export const PACKAGE_NAME = "near-wallet-selector"; +export const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export const REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +export const CONTRACT = "contract"; +export const PENDING_CONTRACT = "contract:pending"; +export const SELECTED_WALLET_ID = `selectedWalletId`; +export const PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/detect-browser.js b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..c4e583914 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,70 @@ +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +export const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.js b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..b2db314cb --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,3 @@ +export const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/index.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/index.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/index.js b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/index.js new file mode 100644 index 000000000..69aaf908c --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/index.js @@ -0,0 +1,5 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.js b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..f2a7f147e --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,97 @@ +import { serialize } from "borsh"; +export const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +export const payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +export const serializeNep413 = (signMessageParams) => { + const payload = createPayload(signMessageParams); + return Buffer.from(serialize(payloadSchema, payload)); +}; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..f08e83f02 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,39 @@ +import { serialize } from "borsh"; +import { sha256 } from "js-sha256"; +import { payloadSchema } from "./payload"; +import { publicKeyFrom } from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import { JsonRpcProvider } from "@near-js/providers"; +export const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = serialize(payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = publicKeyFrom(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +export const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/helpers/waitFor.js b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..55fc5398f --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/helpers/waitFor.js @@ -0,0 +1,22 @@ +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +export const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/ar.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/bg.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/en.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/es.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/hi.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/hr.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/ko.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/mk.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/sl.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/sr.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/vi.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/locale/zh.json b/packages/meteor-wallet/dist/esm/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/options.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/options.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/options.js b/packages/meteor-wallet/dist/esm/core/src/lib/options.js new file mode 100644 index 000000000..fa6b65f26 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/options.js @@ -0,0 +1,40 @@ +import { WebStorageService } from "./services"; +export const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +export const resolveNetwork = (network) => { + return typeof network === "string" ? getNetworkPreset(network) : network; +}; +export const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: resolveNetwork(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new WebStorageService(), + }; +}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/options.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/options.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/options.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/options.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/options.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..304200d75 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,16 @@ +import { EventEmitter as NEventEmitter } from "events"; +export class EventEmitter { + emitter = new NEventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/index.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/index.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/index.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/index.js new file mode 100644 index 000000000..5301a0f98 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/index.js @@ -0,0 +1,11 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..d1ca57bc4 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,32 @@ +export class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +export const logger = new Logger(); diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..bfcf13b62 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,43 @@ +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +export class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new JsonRpcProvider({ url })) + : []; + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..a9175d614 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,25 @@ +const KEY_DELIMITER = ":"; +export class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..3b6ee32f5 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,20 @@ +export class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..d5aa498d4 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,321 @@ +import { EventEmitter } from "../event-emitter/event-emitter.service"; +import { Logger, logger } from "../logger/logger.service"; +import { RECENTLY_SIGNED_IN_WALLETS, PACKAGE_NAME, PENDING_CONTRACT, PENDING_SELECTED_WALLET_ID, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "../../constants"; +import { JsonStorage } from "../storage/json-storage.service"; +export class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger.log(`Failed to validate ${wallet.id} during setup`); + logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger.log("Failed to sign out existing wallet"); + logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger.log(`Failed to sign out ${wallet.id}`); + logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new Logger(module.id), + storage: new JsonStorage(this.storage, [PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger.log("Failed to setup module"); + logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger.error("Failed to sign in to wallet. " + err); + } + } + } +} diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/store.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/store.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/store.js b/packages/meteor-wallet/dist/esm/core/src/lib/store.js new file mode 100644 index 000000000..32dc79078 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/store.js @@ -0,0 +1,154 @@ +import { Subject, BehaviorSubject, scan } from "rxjs"; +import { logger, JsonStorage } from "./services"; +import { PACKAGE_NAME, CONTRACT, SELECTED_WALLET_ID, RECENTLY_SIGNED_IN_WALLETS, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "./constants"; +const reducer = (state, action) => { + logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? REMEMBER_RECENT_WALLETS_STATE.DISABLED + : REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +export const createStore = async (storage) => { + const jsonStorage = new JsonStorage(storage, PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(CONTRACT), + selectedWalletId: await jsonStorage.getItem(SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new BehaviorSubject(initialState); + const actions$ = new Subject(); + actions$.pipe(scan(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, CONTRACT, "contract"); + syncStorage(prevState, state, RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/store.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/store.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI;IAC3D;;OAEG;IACH,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC9B;;OAEG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;OAEG;IACH,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE;QACP,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;QAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,aAAa,CAAC;QACxB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;KAC1B,CAAC;CACH,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,GACD;IACE,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE;QACP,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,CAAC;AAEN,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,IAAI,mBAAmB,CAAC;IAChC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,KAAK;IACpB,UAAU,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACjD,QAAQ,IAAI,mBAAmB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,UAAU,IAAI,aAAa,CAAC;CAC7B"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/store.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/store.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/store.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/testUtils.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/testUtils.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/testUtils.js b/packages/meteor-wallet/dist/esm/core/src/lib/testUtils.js new file mode 100644 index 000000000..7e90e1ce8 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/testUtils.js @@ -0,0 +1,103 @@ +// Remove Jest import +// import * as jest from "jest"; +import { mock } from "jest-mock-extended"; +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, WalletModules } from "./services"; +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +export const mockWallet = async (factory, deps) => { + const { options, storage } = resolveOptions({ + network: getNetworkPreset("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new EventEmitter(); + const store = await createStore(storage); + const walletModules = new WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || mock(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/translate/translate.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/translate/translate.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/translate/translate.js b/packages/meteor-wallet/dist/esm/core/src/lib/translate/translate.js new file mode 100644 index 000000000..610c02a94 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/translate/translate.js @@ -0,0 +1,73 @@ +import en from "../locale/en.json"; +import es from "../locale/es.json"; +import zh from "../locale/zh.json"; +import bg from "../locale/bg.json"; +import ko from "../locale/ko.json"; +import vi from "../locale/vi.json"; +import hi from "../locale/hi.json"; +import ar from "../locale/ar.json"; +import hr from "../locale/hr.json"; +import mk from "../locale/mk.json"; +import sl from "../locale/sl.json"; +import sr from "../locale/sr.json"; +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en; + case "es": + return es; + case "zh": + return zh; + case "bg": + return bg; + case "ko": + return ko; + case "vi": + return vi; + case "hi": + return hi; + case "ar": + return ar; + case "hr": + return hr; + case "mk": + return mk; + case "sl": + return sl; + case "sr": + return sr; + default: + return en; + } +}; +let chosenLang; +export const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +export const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/utils.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/utils.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/utils.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/utils.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/utils.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.js b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..af67afbb6 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.js @@ -0,0 +1,79 @@ +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, Logger, WalletModules, Provider } from "./services"; +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export const setupWalletSelector = async (params) => { + const { options, storage } = resolveOptions(params); + Logger.debug = options.debug; + const emitter = new EventEmitter(); + const store = await createStore(storage); + const network = await getNetworkPreset(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet-selector.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet/index.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet/index.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet/index.js b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/index.js new file mode 100644 index 000000000..bd35cba8b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/index.js @@ -0,0 +1,2 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet/transactions.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/transactions.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/core/src/lib/wallet/wallet.types.js b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/core/src/lib/wallet/wallet.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/index.d.ts b/packages/meteor-wallet/dist/esm/meteor-wallet/src/index.d.ts new file mode 100644 index 000000000..45d41c527 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/index.d.ts @@ -0,0 +1,2 @@ +export { setupMeteorWallet } from "./lib/meteor-wallet"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/index.d.ts.map b/packages/meteor-wallet/dist/esm/meteor-wallet/src/index.d.ts.map new file mode 100644 index 000000000..0c204cca9 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/index.js b/packages/meteor-wallet/dist/esm/meteor-wallet/src/index.js new file mode 100644 index 000000000..88da0dd58 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/index.js @@ -0,0 +1 @@ +export { setupMeteorWallet } from "./lib/meteor-wallet"; diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/icon.d.ts b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/icon.d.ts new file mode 100644 index 000000000..d82339931 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/png;base64,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"; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/icon.d.ts.map b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/icon.d.ts.map new file mode 100644 index 000000000..41a840f26 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAAo/d"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/icon.js b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/icon.js new file mode 100644 index 000000000..3157f8334 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/icon.js @@ -0,0 +1 @@ +export default `data:image/png;base64,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`; diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet-types.d.ts b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet-types.d.ts new file mode 100644 index 000000000..9f036a144 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet-types.d.ts @@ -0,0 +1,11 @@ +import type { MeteorWallet as MeteorWalletSdk } from "@meteorwallet/sdk"; +import type { keyStores } from "near-api-js"; +export interface MeteorWalletParams_Injected { + iconUrl?: string; + deprecated?: boolean; +} +export interface MeteorWalletState { + wallet: MeteorWalletSdk; + keyStore: keyStores.BrowserLocalStorageKeyStore; +} +//# sourceMappingURL=meteor-wallet-types.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet-types.d.ts.map b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet-types.d.ts.map new file mode 100644 index 000000000..325b964a7 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet-types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"meteor-wallet-types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/meteor-wallet-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC,2BAA2B,CAAC;CACjD"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet-types.js b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet-types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet-types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet.d.ts b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet.d.ts new file mode 100644 index 000000000..bde2828bd --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet.d.ts @@ -0,0 +1,4 @@ +import type { InjectedWallet, WalletModuleFactory } from "@near-wallet-selector/core"; +import type { MeteorWalletParams_Injected } from "./meteor-wallet-types"; +export declare function setupMeteorWallet({ iconUrl, deprecated, }?: MeteorWalletParams_Injected): WalletModuleFactory; +//# sourceMappingURL=meteor-wallet.d.ts.map \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet.d.ts.map b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet.d.ts.map new file mode 100644 index 000000000..cee7f612a --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"meteor-wallet.d.ts","sourceRoot":"","sources":["../../../../../src/lib/meteor-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EAGd,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,uBAAuB,CAAC;AA2L/B,wBAAgB,iBAAiB,CAAC,EAChC,OAAc,EACd,UAAkB,GACnB,GAAE,2BAAgC,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAyBxE"} \ No newline at end of file diff --git a/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet.js b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet.js new file mode 100644 index 000000000..b32ff65d9 --- /dev/null +++ b/packages/meteor-wallet/dist/esm/meteor-wallet/src/lib/meteor-wallet.js @@ -0,0 +1,167 @@ +import * as nearAPI from "near-api-js"; +import { EMeteorWalletSignInType, MeteorWallet as MeteorWalletSdk, } from "@meteorwallet/sdk"; +import icon from "./icon"; +const setupWalletState = async (params, network) => { + const keyStore = new nearAPI.keyStores.BrowserLocalStorageKeyStore(window.localStorage, "_meteor_wallet"); + const near = await nearAPI.connect({ + keyStore, + ...network, + headers: {}, + }); + const wallet = new MeteorWalletSdk({ near, appKeyPrefix: "near_app" }); + return { + wallet, + keyStore, + }; +}; +const createMeteorWalletInjected = async ({ options, logger, store, params }) => { + const _state = await setupWalletState(params, options.network); + const getAccounts = async () => { + const accountId = _state.wallet.getAccountId(); + const account = _state.wallet.account(); + if (!accountId || !account) { + return []; + } + const publicKey = await account.connection.signer.getPublicKey(account.accountId, options.network.networkId); + return [ + { + accountId, + publicKey: publicKey ? publicKey.toString() : "", + }, + ]; + }; + return { + async signIn({ contractId, methodNames = [] }) { + logger.log("MeteorWallet:signIn", { + contractId, + methodNames, + }); + if (methodNames.length) { + await _state.wallet.requestSignIn({ + methods: methodNames, + type: EMeteorWalletSignInType.SELECTED_METHODS, + contract_id: contractId, + }); + } + else { + await _state.wallet.requestSignIn({ + type: EMeteorWalletSignInType.ALL_METHODS, + contract_id: contractId, + }); + } + const accounts = await getAccounts(); + logger.log("MeteorWallet:signIn", { + contractId, + methodNames, + account: accounts[0], + }); + return accounts; + }, + async signOut() { + if (_state.wallet.isSignedIn()) { + await _state.wallet.signOut(); + } + }, + async isSignedIn() { + if (!_state.wallet) { + return false; + } + return _state.wallet.isSignedIn(); + }, + async getAccounts() { + return getAccounts(); + }, + async verifyOwner({ message }) { + logger.log("MeteorWallet:verifyOwner", { message }); + const response = await _state.wallet.verifyOwner({ + message, + }); + if (response.success) { + return response.payload; + } + else { + throw new Error(`Couldn't verify owner: ${response.message}`); + } + }, + async signMessage({ message, nonce, recipient, state }) { + logger.log("MeteorWallet:signMessage", { + message, + nonce, + recipient, + state, + }); + const accountId = _state.wallet.getAccountId(); + const response = await _state.wallet.signMessage({ + message, + nonce, + recipient, + accountId, + state, + }); + if (response.success) { + return response.payload; + } + else { + throw new Error(`Couldn't sign message owner: ${response.message}`); + } + }, + async signAndSendTransaction({ signerId, receiverId, actions }) { + logger.log("MeteorWallet:signAndSendTransaction", { + signerId, + receiverId, + actions, + }); + const { contract } = store.getState(); + if (!_state.wallet.isSignedIn()) { + throw new Error("Wallet not signed in"); + } + if (!receiverId && !contract) { + throw new Error("No receiver found to send the transaction to"); + } + const account = _state.wallet.account(); + return account["signAndSendTransaction_direct"]({ + receiverId: receiverId ?? contract.contractId, + actions, + }); + }, + async signAndSendTransactions({ transactions }) { + logger.log("MeteorWallet:signAndSendTransactions", { + transactions, + }); + if (!_state.wallet.isSignedIn()) { + throw new Error("Wallet not signed in"); + } + return _state.wallet.requestSignTransactions({ + transactions, + }); + }, + buildImportAccountsUrl() { + return `https://wallet.meteorwallet.app/batch-import?network=${_state.wallet._networkId}`; + }, + }; +}; +export function setupMeteorWallet({ iconUrl = icon, deprecated = false, } = {}) { + return async () => { + return { + id: "meteor-wallet", + type: "injected", + metadata: { + available: true, + name: "Meteor Wallet", + description: "Securely store and stake your NEAR tokens and compatible assets with Meteor.", + iconUrl, + deprecated, + downloadUrl: "https://wallet.meteorwallet.app", + useUrlAccountImport: true, + }, + init: (options) => { + return createMeteorWalletInjected({ + ...options, + params: { + iconUrl, + }, + }); + }, + }; + }; +} diff --git a/packages/meteor-wallet/jest.config.ts b/packages/meteor-wallet/jest.config.ts index 3719e5150..6955cac00 100644 --- a/packages/meteor-wallet/jest.config.ts +++ b/packages/meteor-wallet/jest.config.ts @@ -7,7 +7,7 @@ export default { "^.+\\.[tj]s$": [ "ts-jest", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", }, ], }, diff --git a/packages/meteor-wallet/package.json b/packages/meteor-wallet/package.json index 68c487d62..d358e5378 100644 --- a/packages/meteor-wallet/package.json +++ b/packages/meteor-wallet/package.json @@ -2,6 +2,38 @@ "name": "@near-wallet-selector/meteor-wallet", "version": "8.9.13", "description": "Meteor wallet package for NEAR Wallet Selector.", + "scripts": { + "compile:esm": "tsc -p tsconfig.esm.json", + "compile:cjs": "tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/index.d.ts", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "type": "module", + "dependencies": { + "@meteorwallet/sdk": "*", + "@near-wallet-selector/core": "workspace:*", + "near-api-js": "*" + }, + "devDependencies": { + "@types/jest": "*", + "@types/node": "*", + "jest": "*", + "jest-mock-extended": "*", + "rimraf": "*", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js" + } + }, "keywords": [ "near", "blockchain", diff --git a/packages/meteor-wallet/project.json b/packages/meteor-wallet/project.json deleted file mode 100644 index ecae24ad3..000000000 --- a/packages/meteor-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "meteor-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/meteor-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/meteor-wallet", - "tsConfig": "packages/meteor-wallet/tsconfig.lib.json", - "project": "packages/meteor-wallet/package.json", - "entryFile": "packages/meteor-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/meteor-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/meteor-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/meteor-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/meteor-wallet"], - "options": { - "jestConfig": "packages/meteor-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/meteor-wallet/src/lib/meteor-wallet.spec.ts b/packages/meteor-wallet/test/meteor-wallet.spec.ts similarity index 89% rename from packages/meteor-wallet/src/lib/meteor-wallet.spec.ts rename to packages/meteor-wallet/test/meteor-wallet.spec.ts index 387b7d0bd..3ed83a108 100644 --- a/packages/meteor-wallet/src/lib/meteor-wallet.spec.ts +++ b/packages/meteor-wallet/test/meteor-wallet.spec.ts @@ -1,10 +1,10 @@ /* eslint-disable @nx/enforce-module-boundaries */ import { mock } from "jest-mock-extended"; -import { mockWallet } from "../../../core/src/lib/testUtils"; +import { mockWallet } from "@near-wallet-selector/core"; -import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; -import type { InjectedWallet } from "../../../core/src/lib/wallet"; -import { setupMeteorWallet } from "./meteor-wallet"; +import type { MockWalletDependencies } from "@near-wallet-selector/core/dist/esm/lib/testUtils"; +import type { InjectedWallet } from "@near-wallet-selector/core/dist/esm/lib/wallet"; +import { setupMeteorWallet } from "../src/lib/meteor-wallet"; import type { MeteorWallet as MeteorWalletSdk } from "@meteorwallet/sdk"; const accountId = "amirsaran.testnet"; diff --git a/packages/meteor-wallet/tsconfig.cjs.json b/packages/meteor-wallet/tsconfig.cjs.json new file mode 100644 index 000000000..9f12707d4 --- /dev/null +++ b/packages/meteor-wallet/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/meteor-wallet/tsconfig.esm.json b/packages/meteor-wallet/tsconfig.esm.json new file mode 100644 index 000000000..da3a0612d --- /dev/null +++ b/packages/meteor-wallet/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node", "jest"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/meteor-wallet/tsconfig.json b/packages/meteor-wallet/tsconfig.json index 6532eb213..4d8b27c19 100644 --- a/packages/meteor-wallet/tsconfig.json +++ b/packages/meteor-wallet/tsconfig.json @@ -1,20 +1,14 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*"] } - ] -} \ No newline at end of file + }, + "include": ["src/**/*"] +} diff --git a/packages/meteor-wallet/tsconfig.lib.json b/packages/meteor-wallet/tsconfig.lib.json deleted file mode 100644 index b3f90c22f..000000000 --- a/packages/meteor-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/meteor-wallet/tsconfig.spec.json b/packages/meteor-wallet/tsconfig.spec.json deleted file mode 100644 index 546f12877..000000000 --- a/packages/meteor-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} diff --git a/packages/mintbase-wallet/dist/cjs/index.d.ts b/packages/mintbase-wallet/dist/cjs/index.d.ts new file mode 100644 index 000000000..836c426b9 --- /dev/null +++ b/packages/mintbase-wallet/dist/cjs/index.d.ts @@ -0,0 +1,3 @@ +import { setupBitteWallet } from "@mintbase-js/wallet"; +export { setupBitteWallet }; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/mintbase-wallet/dist/cjs/index.d.ts.map b/packages/mintbase-wallet/dist/cjs/index.d.ts.map new file mode 100644 index 000000000..307a0ca72 --- /dev/null +++ b/packages/mintbase-wallet/dist/cjs/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/mintbase-wallet/dist/cjs/index.js b/packages/mintbase-wallet/dist/cjs/index.js new file mode 100644 index 000000000..74abf370d --- /dev/null +++ b/packages/mintbase-wallet/dist/cjs/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupBitteWallet = void 0; +const wallet_1 = require("@mintbase-js/wallet"); +Object.defineProperty(exports, "setupBitteWallet", { enumerable: true, get: function () { return wallet_1.setupBitteWallet; } }); diff --git a/packages/mintbase-wallet/dist/esm/index.d.ts b/packages/mintbase-wallet/dist/esm/index.d.ts new file mode 100644 index 000000000..836c426b9 --- /dev/null +++ b/packages/mintbase-wallet/dist/esm/index.d.ts @@ -0,0 +1,3 @@ +import { setupBitteWallet } from "@mintbase-js/wallet"; +export { setupBitteWallet }; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/mintbase-wallet/dist/esm/index.d.ts.map b/packages/mintbase-wallet/dist/esm/index.d.ts.map new file mode 100644 index 000000000..307a0ca72 --- /dev/null +++ b/packages/mintbase-wallet/dist/esm/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/mintbase-wallet/dist/esm/index.js b/packages/mintbase-wallet/dist/esm/index.js new file mode 100644 index 000000000..0063a6273 --- /dev/null +++ b/packages/mintbase-wallet/dist/esm/index.js @@ -0,0 +1,2 @@ +import { setupBitteWallet } from "@mintbase-js/wallet"; +export { setupBitteWallet }; diff --git a/packages/mintbase-wallet/jest.config.ts b/packages/mintbase-wallet/jest.config.ts index 83af95ff2..a40925e58 100644 --- a/packages/mintbase-wallet/jest.config.ts +++ b/packages/mintbase-wallet/jest.config.ts @@ -7,7 +7,7 @@ export default { "^.+\\.[tj]s$": [ "ts-jest", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", }, ], }, diff --git a/packages/mintbase-wallet/package.json b/packages/mintbase-wallet/package.json index c1793b815..3c7653503 100644 --- a/packages/mintbase-wallet/package.json +++ b/packages/mintbase-wallet/package.json @@ -2,6 +2,35 @@ "name": "@near-wallet-selector/mintbase-wallet", "version": "8.9.13", "description": "Mintbase wallet package for NEAR Wallet Selector.", + "scripts": { + "compile:esm": "tsc -p tsconfig.esm.json", + "compile:cjs": "tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/index.d.ts", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "type": "module", + "dependencies": { + "@mintbase-js/wallet": "*" + }, + "devDependencies": { + "@types/jest": "*", + "@types/node": "*", + "jest": "*", + "rimraf": "*", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js" + } + }, "keywords": [ "near", "blockchain", diff --git a/packages/mintbase-wallet/project.json b/packages/mintbase-wallet/project.json deleted file mode 100644 index 2f4791c18..000000000 --- a/packages/mintbase-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "mintbase-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/mintbase-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/mintbase-wallet", - "tsConfig": "packages/mintbase-wallet/tsconfig.lib.json", - "project": "packages/mintbase-wallet/package.json", - "entryFile": "packages/mintbase-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/mintbase-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/mintbase-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/mintbase-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/mintbase-wallet"], - "options": { - "jestConfig": "packages/mintbase-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["browser-wallet"] -} diff --git a/packages/mintbase-wallet/src/index.ts b/packages/mintbase-wallet/src/index.ts index 07427e7f5..f52b64d75 100644 --- a/packages/mintbase-wallet/src/index.ts +++ b/packages/mintbase-wallet/src/index.ts @@ -1,3 +1,3 @@ -import { setupMintbaseWallet } from "@mintbase-js/wallet"; +import { setupBitteWallet } from "@mintbase-js/wallet"; -export { setupMintbaseWallet }; +export { setupBitteWallet }; diff --git a/packages/mintbase-wallet/tsconfig.cjs.json b/packages/mintbase-wallet/tsconfig.cjs.json new file mode 100644 index 000000000..9f12707d4 --- /dev/null +++ b/packages/mintbase-wallet/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/mintbase-wallet/tsconfig.esm.json b/packages/mintbase-wallet/tsconfig.esm.json new file mode 100644 index 000000000..a51c6f15e --- /dev/null +++ b/packages/mintbase-wallet/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/mintbase-wallet/tsconfig.json b/packages/mintbase-wallet/tsconfig.json index 6532eb213..4d8b27c19 100644 --- a/packages/mintbase-wallet/tsconfig.json +++ b/packages/mintbase-wallet/tsconfig.json @@ -1,20 +1,14 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*"] } - ] -} \ No newline at end of file + }, + "include": ["src/**/*"] +} diff --git a/packages/mintbase-wallet/tsconfig.lib.json b/packages/mintbase-wallet/tsconfig.lib.json deleted file mode 100644 index b3f90c22f..000000000 --- a/packages/mintbase-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/mintbase-wallet/tsconfig.spec.json b/packages/mintbase-wallet/tsconfig.spec.json deleted file mode 100644 index 546f12877..000000000 --- a/packages/mintbase-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} diff --git a/packages/modal-ui-js/dist/cjs/core/src/index.d.ts b/packages/modal-ui-js/dist/cjs/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/index.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/index.js b/packages/modal-ui-js/dist/cjs/core/src/index.js new file mode 100644 index 000000000..cfb828bf8 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = exports.allowOnlyLanguage = exports.translate = exports.serializeNep413 = exports.verifySignature = exports.verifyFullKeyBelongsToUser = exports.isCurrentBrowserSupported = exports.getActiveAccount = exports.waitFor = exports.EventEmitter = exports.setupWalletSelector = void 0; +var wallet_selector_js_1 = require("./lib/wallet-selector.js"); +Object.defineProperty(exports, "setupWalletSelector", { enumerable: true, get: function () { return wallet_selector_js_1.setupWalletSelector; } }); +var services_1 = require("./lib/services"); +Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return services_1.EventEmitter; } }); +var helpers_1 = require("./lib/helpers"); +Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return helpers_1.waitFor; } }); +Object.defineProperty(exports, "getActiveAccount", { enumerable: true, get: function () { return helpers_1.getActiveAccount; } }); +Object.defineProperty(exports, "isCurrentBrowserSupported", { enumerable: true, get: function () { return helpers_1.isCurrentBrowserSupported; } }); +Object.defineProperty(exports, "verifyFullKeyBelongsToUser", { enumerable: true, get: function () { return helpers_1.verifyFullKeyBelongsToUser; } }); +Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return helpers_1.verifySignature; } }); +Object.defineProperty(exports, "serializeNep413", { enumerable: true, get: function () { return helpers_1.serializeNep413; } }); +var translate_1 = require("./lib/translate/translate"); +Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } }); +Object.defineProperty(exports, "allowOnlyLanguage", { enumerable: true, get: function () { return translate_1.allowOnlyLanguage; } }); +var testUtils_1 = require("./lib/testUtils"); +Object.defineProperty(exports, "mockWallet", { enumerable: true, get: function () { return testUtils_1.mockWallet; } }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/constants.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/constants.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/constants.js b/packages/modal-ui-js/dist/cjs/core/src/lib/constants.js new file mode 100644 index 000000000..50899a58d --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PENDING_SELECTED_WALLET_ID = exports.SELECTED_WALLET_ID = exports.PENDING_CONTRACT = exports.CONTRACT = exports.REMEMBER_RECENT_WALLETS_STATE = exports.REMEMBER_RECENT_WALLETS = exports.RECENTLY_SIGNED_IN_WALLETS = exports.PACKAGE_NAME = void 0; +exports.PACKAGE_NAME = "near-wallet-selector"; +exports.RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +exports.REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +exports.REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +exports.CONTRACT = "contract"; +exports.PENDING_CONTRACT = "contract:pending"; +exports.SELECTED_WALLET_ID = `selectedWalletId`; +exports.PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/detect-browser.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/detect-browser.js b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..a03402ab2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,74 @@ +"use strict"; +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCurrentBrowserSupported = void 0; +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; +exports.isCurrentBrowserSupported = isCurrentBrowserSupported; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/getActiveAccount.js b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..0da744cc5 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActiveAccount = void 0; +const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; +exports.getActiveAccount = getActiveAccount; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/index.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/index.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/index.js b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/index.js new file mode 100644 index 000000000..eb80ab43a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./waitFor"), exports); +__exportStar(require("./getActiveAccount"), exports); +__exportStar(require("./detect-browser"), exports); +__exportStar(require("./verify-signature/verify-signature"), exports); +__exportStar(require("./verify-signature/payload"), exports); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/payload.js b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..5655fd8cd --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeNep413 = exports.payloadSchema = exports.createPayload = void 0; +const borsh_1 = require("borsh"); +const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +exports.createPayload = createPayload; +exports.payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +const serializeNep413 = (signMessageParams) => { + const payload = (0, exports.createPayload)(signMessageParams); + return Buffer.from((0, borsh_1.serialize)(exports.payloadSchema, payload)); +}; +exports.serializeNep413 = serializeNep413; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..5d00297d2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyFullKeyBelongsToUser = exports.verifySignature = void 0; +const borsh_1 = require("borsh"); +const js_sha256_1 = require("js-sha256"); +const payload_1 = require("./payload"); +const crypto_1 = require("../../../../../../../near-api-js/packages/crypto"); +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +const providers_1 = require("@near-js/providers"); +const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = (0, borsh_1.serialize)(payload_1.payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(js_sha256_1.sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = (0, crypto_1.publicKeyFrom)(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +exports.verifySignature = verifySignature; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new providers_1.JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; +exports.verifyFullKeyBelongsToUser = verifyFullKeyBelongsToUser; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/waitFor.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/waitFor.js b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..8d37d4cef --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/helpers/waitFor.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitFor = void 0; +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; +exports.waitFor = waitFor; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/ar.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/bg.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/en.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/es.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/hi.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/hr.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/ko.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/mk.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/sl.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/sr.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/vi.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/locale/zh.json b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/options.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/options.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/options.js b/packages/modal-ui-js/dist/cjs/core/src/lib/options.js new file mode 100644 index 000000000..587fab7eb --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/options.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveOptions = exports.resolveNetwork = exports.getNetworkPreset = void 0; +const services_1 = require("./services"); +const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +exports.getNetworkPreset = getNetworkPreset; +const resolveNetwork = (network) => { + return typeof network === "string" ? (0, exports.getNetworkPreset)(network) : network; +}; +exports.resolveNetwork = resolveNetwork; +const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: (0, exports.resolveNetwork)(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new services_1.WebStorageService(), + }; +}; +exports.resolveOptions = resolveOptions; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/options.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/options.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/options.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/options.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/options.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..1129f4fc6 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventEmitter = void 0; +const events_1 = require("events"); +class EventEmitter { + emitter = new events_1.EventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} +exports.EventEmitter = EventEmitter; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/index.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/index.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/index.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/index.js new file mode 100644 index 000000000..771f7ca4c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./provider/provider.service"), exports); +__exportStar(require("./provider/provider.service.types"), exports); +__exportStar(require("./storage/storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service"), exports); +__exportStar(require("./storage/web-storage.service"), exports); +__exportStar(require("./logger/logger.service"), exports); +__exportStar(require("./logger/logger.service.types"), exports); +__exportStar(require("./wallet-modules/wallet-modules.service"), exports); +__exportStar(require("./event-emitter/event-emitter.service"), exports); +__exportStar(require("./event-emitter/event-emitter.types"), exports); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..f2365f6b4 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = exports.Logger = void 0; +class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +exports.Logger = Logger; +exports.logger = new Logger(); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..7798a5f3f --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Provider = void 0; +const providers_1 = require("@near-js/providers"); +class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new providers_1.FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new providers_1.JsonRpcProvider({ url })) + : []; + } +} +exports.Provider = Provider; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..1d1ed0bf1 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonStorage = void 0; +const KEY_DELIMITER = ":"; +class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} +exports.JsonStorage = JsonStorage; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/storage.service.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/web-storage.service.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..b1b3430c7 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebStorageService = void 0; +class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} +exports.WebStorageService = WebStorageService; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..a27acfb1e --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,325 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletModules = void 0; +const event_emitter_service_1 = require("../event-emitter/event-emitter.service"); +const logger_service_1 = require("../logger/logger.service"); +const constants_1 = require("../../constants"); +const json_storage_service_1 = require("../storage/json-storage.service"); +class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger_service_1.logger.log(`Failed to validate ${wallet.id} during setup`); + logger_service_1.logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(constants_1.PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(constants_1.PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(constants_1.PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(constants_1.PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger_service_1.logger.log("Failed to sign out existing wallet"); + logger_service_1.logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(constants_1.RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger_service_1.logger.log(`Failed to sign out ${wallet.id}`); + logger_service_1.logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(constants_1.PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(constants_1.PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new event_emitter_service_1.EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new logger_service_1.Logger(module.id), + storage: new json_storage_service_1.JsonStorage(this.storage, [constants_1.PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger_service_1.logger.log("Failed to setup module"); + logger_service_1.logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger_service_1.logger.error("Failed to sign in to wallet. " + err); + } + } + } +} +exports.WalletModules = WalletModules; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/store.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/store.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/store.js b/packages/modal-ui-js/dist/cjs/core/src/lib/store.js new file mode 100644 index 000000000..fc078e464 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/store.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStore = void 0; +const rxjs_1 = require("rxjs"); +const services_1 = require("./services"); +const constants_1 = require("./constants"); +const reducer = (state, action) => { + services_1.logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? constants_1.REMEMBER_RECENT_WALLETS_STATE.DISABLED + : constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +const createStore = async (storage) => { + const jsonStorage = new services_1.JsonStorage(storage, constants_1.PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(constants_1.CONTRACT), + selectedWalletId: await jsonStorage.getItem(constants_1.SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new rxjs_1.BehaviorSubject(initialState); + const actions$ = new rxjs_1.Subject(); + actions$.pipe((0, rxjs_1.scan)(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, constants_1.SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, constants_1.CONTRACT, "contract"); + syncStorage(prevState, state, constants_1.RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, constants_1.REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; +exports.createStore = createStore; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/store.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/store.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI;IAC3D;;OAEG;IACH,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC9B;;OAEG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;OAEG;IACH,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE;QACP,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;QAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,aAAa,CAAC;QACxB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;KAC1B,CAAC;CACH,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,GACD;IACE,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE;QACP,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,CAAC;AAEN,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,IAAI,mBAAmB,CAAC;IAChC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,KAAK;IACpB,UAAU,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACjD,QAAQ,IAAI,mBAAmB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,UAAU,IAAI,aAAa,CAAC;CAC7B"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/store.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/store.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/store.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/testUtils.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/testUtils.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/testUtils.js b/packages/modal-ui-js/dist/cjs/core/src/lib/testUtils.js new file mode 100644 index 000000000..5e0cc0df9 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/testUtils.js @@ -0,0 +1,107 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = void 0; +// Remove Jest import +// import * as jest from "jest"; +const jest_mock_extended_1 = require("jest-mock-extended"); +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +const mockWallet = async (factory, deps) => { + const { options, storage } = (0, options_1.resolveOptions)({ + network: (0, options_1.getNetworkPreset)("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const walletModules = new services_1.WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || (0, jest_mock_extended_1.mock)(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +exports.mockWallet = mockWallet; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/translate/translate.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/translate/translate.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/translate/translate.js b/packages/modal-ui-js/dist/cjs/core/src/lib/translate/translate.js new file mode 100644 index 000000000..c5573a87c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/translate/translate.js @@ -0,0 +1,81 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.translate = exports.allowOnlyLanguage = void 0; +const en_json_1 = __importDefault(require("../locale/en.json")); +const es_json_1 = __importDefault(require("../locale/es.json")); +const zh_json_1 = __importDefault(require("../locale/zh.json")); +const bg_json_1 = __importDefault(require("../locale/bg.json")); +const ko_json_1 = __importDefault(require("../locale/ko.json")); +const vi_json_1 = __importDefault(require("../locale/vi.json")); +const hi_json_1 = __importDefault(require("../locale/hi.json")); +const ar_json_1 = __importDefault(require("../locale/ar.json")); +const hr_json_1 = __importDefault(require("../locale/hr.json")); +const mk_json_1 = __importDefault(require("../locale/mk.json")); +const sl_json_1 = __importDefault(require("../locale/sl.json")); +const sr_json_1 = __importDefault(require("../locale/sr.json")); +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en_json_1.default; + case "es": + return es_json_1.default; + case "zh": + return zh_json_1.default; + case "bg": + return bg_json_1.default; + case "ko": + return ko_json_1.default; + case "vi": + return vi_json_1.default; + case "hi": + return hi_json_1.default; + case "ar": + return ar_json_1.default; + case "hr": + return hr_json_1.default; + case "mk": + return mk_json_1.default; + case "sl": + return sl_json_1.default; + case "sr": + return sr_json_1.default; + default: + return en_json_1.default; + } +}; +let chosenLang; +const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +exports.allowOnlyLanguage = allowOnlyLanguage; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; +exports.translate = translate; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/utils.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/utils.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/utils.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/utils.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/utils.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.js b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..8ffb4cc07 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletSelector = void 0; +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +const setupWalletSelector = async (params) => { + const { options, storage } = (0, options_1.resolveOptions)(params); + services_1.Logger.debug = options.debug; + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const network = await (0, options_1.getNetworkPreset)(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new services_1.WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new services_1.Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; +exports.setupWalletSelector = setupWalletSelector; diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet-selector.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/index.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/index.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/index.js b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/index.js new file mode 100644 index 000000000..d7ee97f6b --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./wallet.types"), exports); +__exportStar(require("./transactions.types"), exports); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/transactions.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/transactions.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/transactions.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/wallet.types.d.ts b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/wallet.types.js b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/core/src/lib/wallet/wallet.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/index.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/index.d.ts new file mode 100644 index 000000000..f30fecabf --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupModal } from "./lib/modal"; +export type { WalletSelectorModal, ModalOptions, Theme, ModalEvents, } from "./lib/modal.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/index.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/index.d.ts.map new file mode 100644 index 000000000..8a8c34d43 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,WAAW,GACZ,MAAM,mBAAmB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/index.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/index.js new file mode 100644 index 000000000..18274ba33 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupModal = void 0; +var modal_1 = require("./lib/modal"); +Object.defineProperty(exports, "setupModal", { enumerable: true, get: function () { return modal_1.setupModal; } }); diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts new file mode 100644 index 000000000..618c83ac5 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderConnectHardwareWallet(module: ModuleState): void; +//# sourceMappingURL=ConnectHardwareWallet.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts.map new file mode 100644 index 000000000..96bb031ad --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectHardwareWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ConnectHardwareWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQtE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QA+CtE"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ConnectHardwareWallet.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ConnectHardwareWallet.js new file mode 100644 index 000000000..5ba592b80 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ConnectHardwareWallet.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderConnectHardwareWallet = renderConnectHardwareWallet; +const modal_1 = require("../modal"); +const render_modal_1 = require("../render-modal"); +const SpecifyDerivationPath_1 = require("./SpecifyDerivationPath"); +const core_1 = require("@near-wallet-selector/core"); +const CloseIcon_1 = require("./icons/CloseIcon"); +const LedgerDeviceIcon_1 = require("./icons/LedgerDeviceIcon"); +function renderConnectHardwareWallet(module) { + if (!modal_1.modalState) { + return; + } + modal_1.modalState.derivationPath = modal_1.DEFAULT_DERIVATION_PATH; + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    + ${(0, core_1.translate)("modal.ledger.connectWithLedger")} +

    + +
    +
    +
    +
    +
    + ${LedgerDeviceIcon_1.LedgerDeviceIcon} +
    +
    +

    ${(0, core_1.translate)("modal.ledger.makeSureYourLedger")}

    +

    ${(0, core_1.translate)("modal.ledger.specifyHDPath")}

    +
    +
    +
    +
    +
    + `; + document.getElementById("continue-button")?.addEventListener("click", () => { + (0, render_modal_1.connectToWallet)(module, false); + }); + document + .getElementById("specify-derivation-path-button") + ?.addEventListener("click", () => { + (0, SpecifyDerivationPath_1.renderSpecifyDerivationPath)(module); + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/GetAWallet.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/GetAWallet.d.ts new file mode 100644 index 000000000..0302ef02d --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/GetAWallet.d.ts @@ -0,0 +1,2 @@ +export declare function renderGetAWallet(): Promise; +//# sourceMappingURL=GetAWallet.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/GetAWallet.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/GetAWallet.d.ts.map new file mode 100644 index 000000000..6660df259 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/GetAWallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetAWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/GetAWallet.ts"],"names":[],"mappings":"AA+BA,wBAAsB,gBAAgB,kBAmGrC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/GetAWallet.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/GetAWallet.js new file mode 100644 index 000000000..087981702 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/GetAWallet.js @@ -0,0 +1,97 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderGetAWallet = renderGetAWallet; +const modal_1 = require("../modal"); +const WhatIsAWallet_1 = require("./WhatIsAWallet"); +const core_1 = require("@near-wallet-selector/core"); +const BackArrowIcon_1 = require("./icons/BackArrowIcon"); +const CloseIcon_1 = require("./icons/CloseIcon"); +const QRIcon_1 = require("./icons/QRIcon"); +const LinkIcon_1 = require("./icons/LinkIcon"); +function getWalletUrl(module) { + if (!modal_1.modalState) { + return; + } + let url = ""; + if (module.type === "injected") { + url = module.metadata.downloadUrl; + } + if (module.type === "browser") { + url = module.metadata.walletUrl; + } + return url; +} +async function renderGetAWallet() { + if (!modal_1.modalState) { + return; + } + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    + +
    +

    ${(0, core_1.translate)("modal.wallet.getAWallet")}

    + +
    +
    +
    + +
    +
    +
    + `; + const filterByType = (item) => { + return (item.type !== "bridge" && + item.type !== "hardware" && + item.type !== "instant-link"); + }; + const filteredModules = modal_1.modalState.modules.filter(filterByType); + for (let i = 0; i < filteredModules.length; i++) { + const qrIcon = ["nearfi", "here-wallet"].includes(filteredModules[i].id); + const hereWalletType = filteredModules[i].id === "here-wallet" ? "mobile" : ""; + const walletUrl = getWalletUrl(filteredModules[i]); + document.getElementById("wallets")?.insertAdjacentHTML("beforeend", ` +
    +
    + ${qrIcon && walletUrl + ? `${QRIcon_1.QRIcon}` + : !qrIcon && walletUrl + ? `${LinkIcon_1.LinkIcon}` + : ``} + +
    +
    + ${filteredModules[i].metadata.name}
    +
    +
    ${filteredModules[i].metadata.name}
    +
    ${(0, core_1.translate)(`modal.walletTypes.${hereWalletType || filteredModules[i].type}`)}
    +
    +
    +`); + } + Array.from(document.querySelectorAll(".single-wallet-get")).forEach((button) => { + button.addEventListener("click", () => { + if (!modal_1.modalState) { + return; + } + const module = modal_1.modalState.modules.find((m) => m.id === button.id); + if (!module) { + return; + } + const walletUrl = getWalletUrl(module); + if (walletUrl) { + window.open(walletUrl, "_blank"); + } + }); + }); + document.getElementById("back-button")?.addEventListener("click", () => { + (0, WhatIsAWallet_1.renderWhatIsAWallet)(); + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts new file mode 100644 index 000000000..d525f00bf --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts @@ -0,0 +1,4 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +import type { HardwareWalletAccountState } from "../render-modal"; +export declare function renderLedgerAccountsOverviewList(module: ModuleState, accounts: Array, selectedAccounts: Array): Promise; +//# sourceMappingURL=LedgerAccountsOverviewList.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts.map new file mode 100644 index 000000000..c9eec0f57 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LedgerAccountsOverviewList.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/LedgerAccountsOverviewList.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAQlE,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,EAC3C,gBAAgB,EAAE,KAAK,CAAC,0BAA0B,CAAC,iBAuEpD"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.js new file mode 100644 index 000000000..50139b598 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.js @@ -0,0 +1,71 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderLedgerAccountsOverviewList = renderLedgerAccountsOverviewList; +const modal_1 = require("../modal"); +const LedgerSelectAccount_1 = require("./LedgerSelectAccount"); +const WalletConnectionFailed_1 = require("./WalletConnectionFailed"); +const core_1 = require("@near-wallet-selector/core"); +const BackArrowIcon_1 = require("./icons/BackArrowIcon"); +const CloseIcon_1 = require("./icons/CloseIcon"); +async function renderLedgerAccountsOverviewList(module, accounts, selectedAccounts) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    + +
    +

    + ${(0, core_1.translate)("modal.ledger.connecting")} ${selectedAccounts.length} ${(0, core_1.translate)("modal.ledger.ofAccounts")} +

    + +
    +
    +
    +
    +

    + ${(0, core_1.translate)("modal.ledger.overviewTheListOfAuthorized")} +

    +
    +
    + +
    +
    +
    +
    + `; + for (let i = 0; i < selectedAccounts.length; i++) { + document.getElementById("accounts")?.insertAdjacentHTML("beforeend", ` +
    + +
    + `); + } + document.getElementById("back-button")?.addEventListener("click", () => { + (0, LedgerSelectAccount_1.renderLedgerSelectAccount)(module, accounts); + }); + document + .getElementById("finish-button") + ?.addEventListener("click", async () => { + try { + if (!modal_1.modalState) { + return; + } + const wallet = await module.wallet(); + wallet.signIn({ + contractId: modal_1.modalState.options.contractId, + methodNames: modal_1.modalState.options.methodNames, + accounts: selectedAccounts, + }); + modal_1.modalState.container.children[0].classList.remove("open"); + modal_1.modalState.emitter.emit("onHide", { hideReason: "wallet-navigation" }); + } + catch (err) { + await (0, WalletConnectionFailed_1.renderWalletConnectionFailed)(module, err); + } + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts new file mode 100644 index 000000000..1a6ae99aa --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts @@ -0,0 +1,4 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +import type { HardwareWalletAccountState } from "../render-modal"; +export declare function renderLedgerSelectAccount(module: ModuleState, accounts: Array): Promise; +//# sourceMappingURL=LedgerSelectAccount.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts.map new file mode 100644 index 000000000..10a0e3f14 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LedgerSelectAccount.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/LedgerSelectAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAOlE,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,iBA6E5C"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerSelectAccount.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerSelectAccount.js new file mode 100644 index 000000000..20e7f8167 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/LedgerSelectAccount.js @@ -0,0 +1,60 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderLedgerSelectAccount = renderLedgerSelectAccount; +const modal_1 = require("../modal"); +const LedgerAccountsOverviewList_1 = require("./LedgerAccountsOverviewList"); +const SpecifyDerivationPath_1 = require("./SpecifyDerivationPath"); +const core_1 = require("@near-wallet-selector/core"); +const BackArrowIcon_1 = require("./icons/BackArrowIcon"); +const CloseIcon_1 = require("./icons/CloseIcon"); +async function renderLedgerSelectAccount(module, accounts) { + if (!modal_1.modalState) { + return; + } + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    ${(0, core_1.translate)("modal.ledger.selectYourAccounts")}

    + +
    +
    +
    + +
    + `; + for (let i = 0; i < accounts.length; i++) { + document.getElementById("accounts")?.insertAdjacentHTML("beforeend", ` + + `); + } + document + .getElementById("change-derivation-path-button") + ?.addEventListener("click", () => { + (0, SpecifyDerivationPath_1.renderSpecifyDerivationPath)(module); + }); + document.getElementById("connect-button")?.addEventListener("click", (e) => { + e.preventDefault(); + const accountCheckStatuses = Array.from(document.querySelectorAll("input[name='account']")).map((el) => el.checked); + const checkedAccounts = accounts.filter((_account, i) => accountCheckStatuses[i]); + if (checkedAccounts.length < 1) { + return; + } + (0, LedgerAccountsOverviewList_1.renderLedgerAccountsOverviewList)(module, accounts, checkedAccounts); + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts new file mode 100644 index 000000000..69184ebc5 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderNoLedgerAccountsFound(module: ModuleState): Promise; +//# sourceMappingURL=NoLedgerAccountsFound.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts.map new file mode 100644 index 000000000..b1865938c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NoLedgerAccountsFound.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/NoLedgerAccountsFound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMtE,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,iBA0B5E"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/NoLedgerAccountsFound.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/NoLedgerAccountsFound.js new file mode 100644 index 000000000..a4b36a166 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/NoLedgerAccountsFound.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderNoLedgerAccountsFound = renderNoLedgerAccountsFound; +const ConnectHardwareWallet_1 = require("./ConnectHardwareWallet"); +const core_1 = require("@near-wallet-selector/core"); +const BackArrowIcon_1 = require("./icons/BackArrowIcon"); +const CloseIcon_1 = require("./icons/CloseIcon"); +async function renderNoLedgerAccountsFound(module) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    + ${(0, core_1.translate)("modal.ledger.noAccountsFound")} +

    + +
    +
    +
    +
    +

    + ${(0, core_1.translate)("modal.ledger.cantFindAnyAccount")} + MyNearWallet + ${(0, core_1.translate)("modal.ledger.orConnectAnAnotherLedger")} +

    +
    +
    +
    + `; + document.getElementById("back-button")?.addEventListener("click", () => { + (0, ConnectHardwareWallet_1.renderConnectHardwareWallet)(module); + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ScanQRCode.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ScanQRCode.d.ts new file mode 100644 index 000000000..79d8632ab --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ScanQRCode.d.ts @@ -0,0 +1,6 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderScanQRCode(module: ModuleState, params: { + uri: string; + handleOpenDefaultModal: () => void; +}): Promise; +//# sourceMappingURL=ScanQRCode.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ScanQRCode.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ScanQRCode.d.ts.map new file mode 100644 index 000000000..064a380ba --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ScanQRCode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ScanQRCode.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ScanQRCode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAStE,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,sBAAsB,EAAE,MAAM,IAAI,CAAA;CAAE,iBAqF5D"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ScanQRCode.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ScanQRCode.js new file mode 100644 index 000000000..5620dac22 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/ScanQRCode.js @@ -0,0 +1,107 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderScanQRCode = renderScanQRCode; +const core_1 = require("@near-wallet-selector/core"); +const render_modal_1 = require("../render-modal"); +const copy_to_clipboard_1 = __importDefault(require("copy-to-clipboard")); +const QRCode = __importStar(require("qrcode")); +const CloseIcon_1 = require("./icons/CloseIcon"); +const CopyIcon_1 = require("./icons/CopyIcon"); +async function renderScanQRCode(module, params) { + async function formatQRCodeImage(data) { + const dataString = await QRCode.toString(data, { margin: 0, type: "svg" }); + return dataString; + } + const svg = await formatQRCodeImage(params.uri); + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    ${(0, core_1.translate)("modal.qr.scanWithYourMobile")}

    + +
    +
    +
    + ${svg} +
    +
    +
    + ${CopyIcon_1.CopyIcon} + ${(0, core_1.translate)("modal.qr.copyToClipboard")} +
    +
    +
    +

    ${(0, core_1.translate)("modal.qr.preferTheOfficial")} ${module.metadata.name}?

    + +
    +
    +
    +`; + document.getElementById("continue-button")?.addEventListener("click", () => { + (0, render_modal_1.connectToWallet)(module, false); + }); + const copyBtnElement = document.getElementById("copy-uri-to-clipboard"); + const notificationElement = document.getElementById("uri-copy-notification"); + const showURICopyNotification = (message) => { + if (notificationElement && copyBtnElement) { + notificationElement.innerHTML = message; + notificationElement.style.display = "block"; + copyBtnElement.style.display = "none"; + } + }; + const hideNotification = () => { + if (notificationElement && copyBtnElement) { + copyBtnElement.style.display = "flex"; + notificationElement.style.display = "none"; + } + }; + document + .getElementById("copy-uri-to-clipboard") + ?.addEventListener("click", () => { + if (!params.uri) { + return; + } + const success = (0, copy_to_clipboard_1.default)(params.uri); + if (success) { + showURICopyNotification((0, core_1.translate)("modal.qr.copiedToClipboard")); + setTimeout(() => hideNotification(), 1200); + } + else { + showURICopyNotification((0, core_1.translate)("modal.qr.failedToCopy")); + setTimeout(() => hideNotification(), 1200); + } + }); + document + .getElementById("default-modal-trigger") + ?.addEventListener("click", () => { + params.handleOpenDefaultModal(); + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts new file mode 100644 index 000000000..109015253 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderSpecifyDerivationPath(module: ModuleState): void; +//# sourceMappingURL=SpecifyDerivationPath.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts.map new file mode 100644 index 000000000..b6921d3ff --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SpecifyDerivationPath.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/SpecifyDerivationPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAetE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QAoHtE"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/SpecifyDerivationPath.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/SpecifyDerivationPath.js new file mode 100644 index 000000000..3402b3407 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/SpecifyDerivationPath.js @@ -0,0 +1,117 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderSpecifyDerivationPath = renderSpecifyDerivationPath; +const modal_1 = require("../modal"); +const render_modal_1 = require("../render-modal"); +const ConnectHardwareWallet_1 = require("./ConnectHardwareWallet"); +const LedgerAccountsOverviewList_1 = require("./LedgerAccountsOverviewList"); +const LedgerSelectAccount_1 = require("./LedgerSelectAccount"); +const NoLedgerAccountsFound_1 = require("./NoLedgerAccountsFound"); +const WalletConnecting_1 = require("./WalletConnecting"); +const WalletConnectionFailed_1 = require("./WalletConnectionFailed"); +const core_1 = require("@near-wallet-selector/core"); +const CloseIcon_1 = require("./icons/CloseIcon"); +const BackArrowIcon_1 = require("./icons/BackArrowIcon"); +const UpArrowIcon_1 = require("./icons/UpArrowIcon"); +const DownArrowIcon_1 = require("./icons/DownArrowIcon"); +function renderSpecifyDerivationPath(module) { + if (!modal_1.modalState) { + return; + } + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    + ${(0, core_1.translate)("modal.ledger.specifyHDPath")} +

    + +
    +
    +
    +
    +
    +
    44'/397'/0'/0'/
    +
    +
    +
    + + +
    +
    +
    +

    + ${(0, core_1.translate)("modal.ledger.enterYourPreferredHDPath")} +

    + +
    + +
    +
    +
    +
    + `; + const derivationPathIndexElement = document.getElementById("derivation-path-index"); + derivationPathIndexElement.innerText = modal_1.modalState.derivationPath.slice(-2, -1); + document + .getElementById("increase-index-button") + ?.addEventListener("click", () => { + if (!modal_1.modalState) { + return; + } + const nextIndex = parseInt(derivationPathIndexElement.innerText) + 1; + modal_1.modalState.derivationPath = + modal_1.modalState.derivationPath.slice(0, -2) + nextIndex.toString() + "'"; + derivationPathIndexElement.innerText = nextIndex.toString(); + }); + document + .getElementById("decrease-index-button") + ?.addEventListener("click", () => { + if (!modal_1.modalState) { + return; + } + const nextIndex = parseInt(derivationPathIndexElement.innerText) - 1; + modal_1.modalState.derivationPath = + modal_1.modalState.derivationPath.slice(0, -2) + nextIndex.toString() + "'"; + if (nextIndex >= 0) { + derivationPathIndexElement.innerText = nextIndex.toString(); + } + }); + document.getElementById("back-button")?.addEventListener("click", () => { + (0, ConnectHardwareWallet_1.renderConnectHardwareWallet)(module); + }); + document + .getElementById("scan-button") + ?.addEventListener("click", async () => { + try { + const wallet = await module.wallet(); + (0, WalletConnecting_1.renderWalletConnecting)(module); + const accounts = await (0, render_modal_1.resolveAccounts)(wallet); + if (!accounts || accounts.length < 1) { + return (0, NoLedgerAccountsFound_1.renderNoLedgerAccountsFound)(module); + } + if (accounts.length === 1) { + (0, LedgerAccountsOverviewList_1.renderLedgerAccountsOverviewList)(module, accounts, accounts); + } + (0, LedgerSelectAccount_1.renderLedgerSelectAccount)(module, accounts); + } + catch (err) { + await (0, WalletConnectionFailed_1.renderWalletConnectionFailed)(module, err); + } + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletAccount.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletAccount.d.ts new file mode 100644 index 000000000..af4c5650e --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletAccount.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderWalletAccount(module?: ModuleState | null): Promise; +//# sourceMappingURL=WalletAccount.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletAccount.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletAccount.d.ts.map new file mode 100644 index 000000000..9e44b733d --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletAccount.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAKtE,wBAAsB,mBAAmB,CACvC,MAAM,GAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAW,iBA6B1C"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletAccount.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletAccount.js new file mode 100644 index 000000000..fcaf6a8cb --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletAccount.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderWalletAccount = renderWalletAccount; +const core_1 = require("@near-wallet-selector/core"); +const CloseIcon_1 = require("./icons/CloseIcon"); +const ConnectionSuccessIcon_1 = require("./icons/ConnectionSuccessIcon"); +async function renderWalletAccount(module = null) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +

    + +
    +
    +
    +
    +
    + ${module?.metadata.name} +
    +

    ${module?.metadata.name}

    +
    + ${ConnectionSuccessIcon_1.ConnectionSuccessIcon} + + ${(0, core_1.translate)("modal.wallet.connectionSuccessful")} + +
    +
    +
    +
    + `; +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnecting.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnecting.d.ts new file mode 100644 index 000000000..7fa724d2d --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnecting.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderWalletConnecting(module?: ModuleState | null): Promise; +//# sourceMappingURL=WalletConnecting.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnecting.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnecting.d.ts.map new file mode 100644 index 000000000..846697ecf --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnecting.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletConnecting.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletConnecting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAItE,wBAAsB,sBAAsB,CAC1C,MAAM,GAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAW,iBAqC1C"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnecting.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnecting.js new file mode 100644 index 000000000..130bf7b75 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnecting.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderWalletConnecting = renderWalletConnecting; +const core_1 = require("@near-wallet-selector/core"); +const CloseIcon_1 = require("./icons/CloseIcon"); +async function renderWalletConnecting(module = null) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +

    + +
    +
    +
    +
    + ${module?.metadata.name} +
    +

    ${module?.metadata.name}

    +
    +
    loading-icon
    + + ${(0, core_1.translate)("modal.wallet.connectingTo")} ${module?.metadata.name}... + +
    +
    + + ${(0, core_1.translate)("modal.wallet.connectingMessage." + module?.type)} + +
    +
    +
    +
    + `; +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts new file mode 100644 index 000000000..5431c3a33 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderWalletConnectionFailed(module: ModuleState, err: Error): Promise; +//# sourceMappingURL=WalletConnectionFailed.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts.map new file mode 100644 index 000000000..6d96a6b2e --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletConnectionFailed.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletConnectionFailed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMtE,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,GAAG,EAAE,KAAK,iBA0CX"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnectionFailed.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnectionFailed.js new file mode 100644 index 000000000..24ec9e5e8 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletConnectionFailed.js @@ -0,0 +1,42 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderWalletConnectionFailed = renderWalletConnectionFailed; +const render_modal_1 = require("../render-modal"); +const core_1 = require("@near-wallet-selector/core"); +const CloseIcon_1 = require("./icons/CloseIcon"); +const ConnectionErrorIcon_1 = require("./icons/ConnectionErrorIcon"); +async function renderWalletConnectionFailed(module, err) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +

    + +
    +
    +
    +
    ${module.metadata.name}
    +

    ${module.metadata.name}

    +
    +
    +
    +
    + ${ConnectionErrorIcon_1.ConnectionErrorIcon} + ${(0, core_1.translate)("modal.wallet.connectionFailed")} +
    +

    ${err && err.message ? err.message : ""}

    + ${!module?.metadata.deprecated && module?.metadata.available + ? `` + : ""} +
    +
    +
    +
    +
    +
    + `; + document.getElementById("retry-button")?.addEventListener("click", () => { + (0, render_modal_1.connectToWallet)(module, false); + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts new file mode 100644 index 000000000..c520ff38a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts @@ -0,0 +1,7 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderWalletNotInstalled(module: ModuleState & { + metadata: { + downloadUrl?: string; + }; +}): void; +//# sourceMappingURL=WalletNotInstalled.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts.map new file mode 100644 index 000000000..00abb420c --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletNotInstalled.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletNotInstalled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAOtE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG;IAC5B,QAAQ,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,QAyDF"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletNotInstalled.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletNotInstalled.js new file mode 100644 index 000000000..0eb47aa99 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WalletNotInstalled.js @@ -0,0 +1,58 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderWalletNotInstalled = renderWalletNotInstalled; +const modal_1 = require("../modal"); +const core_1 = require("@near-wallet-selector/core"); +const WhatIsAWallet_1 = require("./WhatIsAWallet"); +const BackArrowIcon_1 = require("./icons/BackArrowIcon"); +const CloseIcon_1 = require("./icons/CloseIcon"); +function renderWalletNotInstalled(module) { + if (!modal_1.modalState) { + return; + } + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    +
    +
    +
    +
    +
    ${module.metadata.name} +
    +

    + ${module.metadata.name} +

    +
    +

    + ${(0, core_1.translate)("modal.install.youllNeedToInstall")} ${module.metadata.name} + ${(0, core_1.translate)("modal.install.toContinueAfterInstalling")} +   + ${(0, core_1.translate)("modal.install.refreshThePage")} + +

    +
    + +
    +
    +
    + `; + document.getElementById("back-button")?.addEventListener("click", () => { + (0, WhatIsAWallet_1.renderWhatIsAWallet)(); + }); + document + .getElementById("refresh-page-lint") + ?.addEventListener("click", () => { + window.location.reload(); + }); + document.getElementById("download-button")?.addEventListener("click", () => { + if (module.type !== "injected") { + return; + } + window.open(module.metadata.downloadUrl, "_blank"); + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts new file mode 100644 index 000000000..eea9d8063 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts @@ -0,0 +1,2 @@ +export declare function renderWhatIsAWallet(): Promise; +//# sourceMappingURL=WhatIsAWallet.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts.map new file mode 100644 index 000000000..567be8ba5 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WhatIsAWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WhatIsAWallet.ts"],"names":[],"mappings":"AAMA,wBAAsB,mBAAmB,kBAyExC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WhatIsAWallet.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WhatIsAWallet.js new file mode 100644 index 000000000..fb66ca225 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/WhatIsAWallet.js @@ -0,0 +1,78 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderWhatIsAWallet = renderWhatIsAWallet; +const GetAWallet_1 = require("./GetAWallet"); +const core_1 = require("@near-wallet-selector/core"); +const CloseIcon_1 = require("./icons/CloseIcon"); +const KeyIcon_1 = require("./icons/KeyIcon"); +const FolderIcon_1 = require("./icons/FolderIcon"); +async function renderWhatIsAWallet() { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +
    +

    ${(0, core_1.translate)("modal.wallet.whatIsAWallet")}

    + +
    +
    + +
    +
    +
    + ${KeyIcon_1.KeyIcon} +
    +
    +

    ${(0, core_1.translate)("modal.wallet.secureAndManage")}

    +

    ${(0, core_1.translate)("modal.wallet.safelyStore")}

    +
    +
    + +
    +
    + ${FolderIcon_1.FolderIcon} +
    +
    +

    ${(0, core_1.translate)("modal.wallet.logInToAny")}

    +

    ${(0, core_1.translate)("modal.wallet.noNeedToCreate")}

    +
    +
    + +
    + +
    + +
    +

    + ${(0, core_1.translate)("modal.wallet.useAWallet")} +

    + +
    + +
    + +
    + +
    +
    + `; + document + .getElementById("get-a-wallet-button") + ?.addEventListener("click", () => { + (0, GetAWallet_1.renderGetAWallet)(); + }); + document + .getElementById("get-a-wallet-button-mobile") + ?.addEventListener("click", () => { + (0, GetAWallet_1.renderGetAWallet)(); + }); +} diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts new file mode 100644 index 000000000..a3978e44e --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts @@ -0,0 +1,2 @@ +export declare const BackArrowIcon = "\n\n \n \n"; +//# sourceMappingURL=BackArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts.map new file mode 100644 index 000000000..544454b38 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BackArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/BackArrowIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,6PAKnB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/BackArrowIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/BackArrowIcon.js new file mode 100644 index 000000000..73debd5d2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/BackArrowIcon.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BackArrowIcon = void 0; +exports.BackArrowIcon = ` + + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts new file mode 100644 index 000000000..06418ca5e --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts @@ -0,0 +1,2 @@ +export declare const CloseIcon = "\n\n \n \n \n"; +//# sourceMappingURL=CloseIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts.map new file mode 100644 index 000000000..a72344cf5 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CloseIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/CloseIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,uTAOf,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CloseIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CloseIcon.js new file mode 100644 index 000000000..e6d4c4d77 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CloseIcon.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CloseIcon = void 0; +exports.CloseIcon = ` + + + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts new file mode 100644 index 000000000..6780df271 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts @@ -0,0 +1,2 @@ +export declare const ConnectionErrorIcon = "\n\n \n \n \n"; +//# sourceMappingURL=ConnectionErrorIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts.map new file mode 100644 index 000000000..ee2c2f4a7 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionErrorIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/ConnectionErrorIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,8wBA6BzB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.js new file mode 100644 index 000000000..1d8a6e81a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConnectionErrorIcon = void 0; +exports.ConnectionErrorIcon = ` + + + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts new file mode 100644 index 000000000..f3b3e95a7 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts @@ -0,0 +1,2 @@ +export declare const ConnectionSuccessIcon = "\n\n \n \n"; +//# sourceMappingURL=ConnectionSuccessIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map new file mode 100644 index 000000000..fd09b5100 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionSuccessIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/ConnectionSuccessIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+0BAsB3B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.js new file mode 100644 index 000000000..9ce39809a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConnectionSuccessIcon = void 0; +exports.ConnectionSuccessIcon = ` + + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts new file mode 100644 index 000000000..4fbddc31f --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts @@ -0,0 +1,2 @@ +export declare const CopyIcon = "\n\n \n \n"; +//# sourceMappingURL=CopyIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts.map new file mode 100644 index 000000000..7d54650cf --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CopyIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/CopyIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,qlBAsBd,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CopyIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CopyIcon.js new file mode 100644 index 000000000..b2930d60a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/CopyIcon.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CopyIcon = void 0; +exports.CopyIcon = ` + + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts new file mode 100644 index 000000000..6ef64714a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts @@ -0,0 +1,2 @@ +export declare const DownArrowIcon = "\n\n \n"; +//# sourceMappingURL=DownArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts.map new file mode 100644 index 000000000..1cd56b932 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DownArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/DownArrowIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,+QAKnB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/DownArrowIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/DownArrowIcon.js new file mode 100644 index 000000000..ac78c3d78 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/DownArrowIcon.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DownArrowIcon = void 0; +exports.DownArrowIcon = ` + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts new file mode 100644 index 000000000..4a299bbcf --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts @@ -0,0 +1,2 @@ +export declare const FolderIcon = "\n\n \n \n \n"; +//# sourceMappingURL=FolderIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts.map new file mode 100644 index 000000000..f007f65f1 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FolderIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/FolderIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,wjBAKhB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/FolderIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/FolderIcon.js new file mode 100644 index 000000000..a8881f2ad --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/FolderIcon.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FolderIcon = void 0; +exports.FolderIcon = ` + + + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts new file mode 100644 index 000000000..3ad31b9fc --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts @@ -0,0 +1,2 @@ +export declare const KeyIcon = "\n\n \n"; +//# sourceMappingURL=KeyIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts.map new file mode 100644 index 000000000..e4d546246 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KeyIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/KeyIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,ynBAGb,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/KeyIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/KeyIcon.js new file mode 100644 index 000000000..6b31adfcd --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/KeyIcon.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KeyIcon = void 0; +exports.KeyIcon = ` + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts new file mode 100644 index 000000000..4f994de6a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts @@ -0,0 +1,2 @@ +export declare const LedgerDeviceIcon = "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n "; +//# sourceMappingURL=LedgerDeviceIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts.map new file mode 100644 index 000000000..98532cab2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LedgerDeviceIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/LedgerDeviceIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,ivXAiFrB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.js new file mode 100644 index 000000000..27efe88c5 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.js @@ -0,0 +1,85 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LedgerDeviceIcon = void 0; +exports.LedgerDeviceIcon = ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts new file mode 100644 index 000000000..1bbe4637d --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts @@ -0,0 +1,2 @@ +export declare const LinkIcon = "\n\n \n \n \n"; +//# sourceMappingURL=LinkIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts.map new file mode 100644 index 000000000..131e42efc --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LinkIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/LinkIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,g0BA0Bd,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LinkIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LinkIcon.js new file mode 100644 index 000000000..bd314c6aa --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/LinkIcon.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LinkIcon = void 0; +exports.LinkIcon = ` + + + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/QRIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/QRIcon.d.ts new file mode 100644 index 000000000..79a7a537a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/QRIcon.d.ts @@ -0,0 +1,2 @@ +export declare const QRIcon = "\n\n \n \n \n \n \n \n \n"; +//# sourceMappingURL=QRIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/QRIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/QRIcon.d.ts.map new file mode 100644 index 000000000..a3992b5ba --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/QRIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"QRIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/QRIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,grCAqDZ,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/QRIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/QRIcon.js new file mode 100644 index 000000000..7481a7334 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/QRIcon.js @@ -0,0 +1,57 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.QRIcon = void 0; +exports.QRIcon = ` + + + + + + + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts new file mode 100644 index 000000000..c0a4c2417 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts @@ -0,0 +1,2 @@ +export declare const UpArrowIcon = "\n\n \n"; +//# sourceMappingURL=UpArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts.map new file mode 100644 index 000000000..f8150b789 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UpArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/UpArrowIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,4QAKjB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/UpArrowIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/UpArrowIcon.js new file mode 100644 index 000000000..ab62a101e --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/UpArrowIcon.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UpArrowIcon = void 0; +exports.UpArrowIcon = ` + + +`; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts new file mode 100644 index 000000000..de0a2f733 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts @@ -0,0 +1,2 @@ +export declare const WarningIcon = "\n\n \n \n \n "; +//# sourceMappingURL=WarningIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts.map new file mode 100644 index 000000000..708e67608 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WarningIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/WarningIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,quBAKhB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/WarningIcon.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/WarningIcon.js new file mode 100644 index 000000000..d3551a90a --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/components/icons/WarningIcon.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WarningIcon = void 0; +exports.WarningIcon = ` + + + + + `; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.d.ts new file mode 100644 index 000000000..c56e03ca2 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.d.ts @@ -0,0 +1,23 @@ +import type { EventEmitterService, ModuleState, Wallet, WalletSelector } from "@near-wallet-selector/core"; +import type { WalletSelectorModal, ModalOptions, ModalRoute, ModalEvents } from "./modal.types"; +export declare const DEFAULT_DERIVATION_PATH = "44'/397'/0'/0'/1'"; +type ModalState = { + container: HTMLElement; + selector: WalletSelector; + options: ModalOptions; + route: ModalRoute; + modules: Array>; + derivationPath: string; + emitter: EventEmitterService; +}; +export declare let modalState: ModalState | null; +export declare function updateModalState(newModalState: ModalState): void; +/** + * Initiates a modal instance + * @param {WalletSelector} selector Selector + * @param {ModalOptions} options Modal options + * @returns {WalletSelectorModal} Returns a WalletSelectorModal object + */ +export declare const setupModal: (selector: WalletSelector, options: ModalOptions) => WalletSelectorModal; +export {}; +//# sourceMappingURL=modal.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.d.ts.map new file mode 100644 index 000000000..0eed76280 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,MAAM,EACN,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,WAAW,EACZ,MAAM,eAAe,CAAC;AAMvB,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAI3D,KAAK,UAAU,GAAG;IAChB,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC3C,CAAC;AAEF,eAAO,IAAI,UAAU,EAAE,UAAU,GAAG,IAAW,CAAC;AAEhD,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,UAAU,QAEzD;AAQD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aACX,cAAc,WACf,YAAY,KACpB,mBA4GF,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.js new file mode 100644 index 000000000..e7acf3357 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.js @@ -0,0 +1,120 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupModal = exports.modalState = exports.DEFAULT_DERIVATION_PATH = void 0; +exports.updateModalState = updateModalState; +const render_modal_1 = require("./render-modal"); +const WhatIsAWallet_1 = require("./components/WhatIsAWallet"); +const WalletAccount_1 = require("./components/WalletAccount"); +const core_1 = require("@near-wallet-selector/core"); +const MODAL_ELEMENT_ID = "near-wallet-selector-modal"; +exports.DEFAULT_DERIVATION_PATH = "44'/397'/0'/0'/1'"; +let modalInstance = null; +exports.modalState = null; +function updateModalState(newModalState) { + exports.modalState = newModalState; +} +if (typeof window !== "undefined") { + const el = document.createElement("div"); + el.id = MODAL_ELEMENT_ID; + document.body.appendChild(el); +} +/** + * Initiates a modal instance + * @param {WalletSelector} selector Selector + * @param {ModalOptions} options Modal options + * @returns {WalletSelectorModal} Returns a WalletSelectorModal object + */ +const setupModal = (selector, options) => { + const emitter = new core_1.EventEmitter(); + selector.store.getState().modules.forEach(async (module) => { + if ("topLevelInjected" in module.metadata) { + if (!module.metadata.topLevelInjected) { + return; + } + const wallet = await module.wallet(); + if (wallet.type !== "injected") { + return; + } + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + }); + } + }); + exports.modalState = { + container: document.getElementById(MODAL_ELEMENT_ID), + selector, + options, + route: { + name: "WalletOptions", + }, + modules: [], + derivationPath: exports.DEFAULT_DERIVATION_PATH, + emitter, + }; + exports.modalState.selector.store.observable.subscribe((state) => { + if (!exports.modalState) { + return; + } + if (selector.options.optimizeWalletOrder) { + state.modules.sort((current, next) => { + if (current.metadata.deprecated === next.metadata.deprecated) { + return 0; + } + return current.metadata.deprecated ? 1 : -1; + }); + state.modules.sort((current, next) => { + if (next.metadata.available === current.metadata.available) { + return 0; + } + return next.metadata.available ? 1 : -1; + }); + } + exports.modalState.modules = state.modules; + }); + const close = (e) => { + if (e.key === "Escape") { + if (!exports.modalState) { + return; + } + exports.modalState.container.children[0].classList.remove("open"); + exports.modalState.emitter.emit("onHide", { hideReason: "user-triggered" }); + } + }; + window.addEventListener("keydown", close); + (0, render_modal_1.renderModal)(); + if (!modalInstance) { + modalInstance = { + show: () => { + if (!exports.modalState) { + return; + } + (0, core_1.allowOnlyLanguage)(exports.modalState.selector.options.languageCode); + (0, render_modal_1.renderModal)(); + const selectedWalletId = exports.modalState.selector.store.getState().selectedWalletId; + if (selectedWalletId) { + const module = exports.modalState.modules.find((m) => m.id === selectedWalletId); + (0, WalletAccount_1.renderWalletAccount)(module); + } + else { + (0, WhatIsAWallet_1.renderWhatIsAWallet)(); + } + exports.modalState.container.children[0].classList.add("open"); + }, + hide: () => { + if (!exports.modalState) { + return; + } + exports.modalState.container.children[0].classList.remove("open"); + }, + on: (eventName, callback) => { + return exports.modalState.emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + exports.modalState.emitter.off(eventName, callback); + }, + }; + } + return modalInstance; +}; +exports.setupModal = setupModal; diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.types.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.types.d.ts new file mode 100644 index 000000000..863368804 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.types.d.ts @@ -0,0 +1,67 @@ +import type { Wallet } from "@near-wallet-selector/core"; +import type { ModuleState } from "@near-wallet-selector/core"; +import type { Subscription } from "@near-wallet-selector/core"; +export type Theme = "dark" | "light" | "auto"; +export interface ModalOptions { + contractId: string; + methodNames?: Array; + theme?: Theme; + description?: string; +} +export type ModalHideReason = "user-triggered" | "wallet-navigation"; +export type ModalEvents = { + onHide: { + hideReason: ModalHideReason; + }; +}; +export interface WalletSelectorModal { + show(): void; + hide(): void; + on(eventName: EventName, callback: (event: ModalEvents[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: ModalEvents[EventName]) => void): void; +} +type AlertMessageModalRouteParams = { + wallet: Wallet; +}; +type WalletOptionsModalRouteParams = { + wallet: Wallet; +}; +type DerivationPathModalRouteParams = { + walletId: string; +}; +type WalletNotInstalledModalRouteParams = { + module: ModuleState; +}; +type WalletNetworkChangedModalRouteParams = { + wallet: Wallet; +}; +type WalletConnectingModalRouteParams = { + wallet: Wallet; +}; +type AlertMessageModalRoute = { + name: "AlertMessage"; + params?: AlertMessageModalRouteParams; +}; +type WalletOptionsModalRoute = { + name: "WalletOptions"; + params?: WalletOptionsModalRouteParams; +}; +type DerivationPathModalRoute = { + name: "DerivationPath"; + params: DerivationPathModalRouteParams; +}; +type WalletNotInstalledModalRoute = { + name: "WalletNotInstalled"; + params?: WalletNotInstalledModalRouteParams; +}; +type WalletNetworkChangedModalRoute = { + name: "WalletNetworkChanged"; + params?: WalletNetworkChangedModalRouteParams; +}; +type WalletConnectingModalRoute = { + name: "WalletConnecting"; + params?: WalletConnectingModalRouteParams; +}; +export type ModalRoute = AlertMessageModalRoute | WalletOptionsModalRoute | DerivationPathModalRoute | WalletNotInstalledModalRoute | WalletNetworkChangedModalRoute | WalletConnectingModalRoute; +export {}; +//# sourceMappingURL=modal.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.types.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.types.d.ts.map new file mode 100644 index 000000000..5915b1039 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QAAE,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;IACb,EAAE,CAAC,SAAS,SAAS,MAAM,WAAW,EACpC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,GAChD,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,WAAW,EACrC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,GAChD,IAAI,CAAC;CACT;AAED,KAAK,4BAA4B,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,KAAK,oCAAoC,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,4BAA4B,CAAC;CACvC,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,CAAC,EAAE,6BAA6B,CAAC;CACxC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,8BAA8B,CAAC;CACxC,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,CAAC,EAAE,kCAAkC,CAAC;CAC7C,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,CAAC,EAAE,oCAAoC,CAAC;CAC/C,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,CAAC,EAAE,gCAAgC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,sBAAsB,GACtB,uBAAuB,GACvB,wBAAwB,GACxB,4BAA4B,GAC5B,8BAA8B,GAC9B,0BAA0B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.types.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/modal.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/render-modal.d.ts b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/render-modal.d.ts new file mode 100644 index 000000000..e45943eeb --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/render-modal.d.ts @@ -0,0 +1,8 @@ +import type { HardwareWalletAccount, ModuleState, Wallet } from "@near-wallet-selector/core"; +export type HardwareWalletAccountState = HardwareWalletAccount & { + selected: boolean; +}; +export declare const resolveAccounts: (wallet: Wallet) => Promise | null>; +export declare function connectToWallet(module: ModuleState, qrCodeModal?: boolean): Promise; +export declare function renderModal(): void; +//# sourceMappingURL=render-modal.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/render-modal.d.ts.map b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/render-modal.d.ts.map new file mode 100644 index 000000000..61bad6498 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/render-modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"render-modal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/render-modal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EACrB,WAAW,EACX,MAAM,EACP,MAAM,4BAA4B,CAAC;AAcpC,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC/D,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AA2BF,eAAO,MAAM,eAAe,WAClB,MAAM,KACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAsBlD,CAAC;AAEF,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,WAAW,UAAQ,iBAkGpB;AAgJD,wBAAgB,WAAW,SAkI1B"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/render-modal.js b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/render-modal.js new file mode 100644 index 000000000..3871fb785 --- /dev/null +++ b/packages/modal-ui-js/dist/cjs/modal-ui-js/src/lib/render-modal.js @@ -0,0 +1,331 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveAccounts = void 0; +exports.connectToWallet = connectToWallet; +exports.renderModal = renderModal; +const ConnectHardwareWallet_1 = require("./components/ConnectHardwareWallet"); +const LedgerAccountsOverviewList_1 = require("./components/LedgerAccountsOverviewList"); +const LedgerSelectAccount_1 = require("./components/LedgerSelectAccount"); +const NoLedgerAccountsFound_1 = require("./components/NoLedgerAccountsFound"); +const WalletConnecting_1 = require("./components/WalletConnecting"); +const WalletConnectionFailed_1 = require("./components/WalletConnectionFailed"); +const WalletNotInstalled_1 = require("./components/WalletNotInstalled"); +const modal_1 = require("./modal"); +const WalletAccount_1 = require("./components/WalletAccount"); +const ScanQRCode_1 = require("./components/ScanQRCode"); +const core_1 = require("@near-wallet-selector/core"); +const WarningIcon_1 = require("./components/icons/WarningIcon"); +let initialRender = true; +let isChecked = false; +const getAccountIds = async (publicKey) => { + if (!modal_1.modalState) { + return []; + } + const response = await fetch(`${modal_1.modalState.selector.options.network.indexerUrl}/publicKey/ed25519:${publicKey}/accounts`); + if (!response.ok) { + throw new Error("Failed to get account id from public key"); + } + const accountIds = await response.json(); + if (!Array.isArray(accountIds) || !accountIds.length) { + return []; + } + return accountIds; +}; +const resolveAccounts = async (wallet) => { + if (!modal_1.modalState) { + return []; + } + const publicKey = await wallet.getPublicKey(modal_1.modalState.derivationPath); + try { + const accountIds = await getAccountIds(publicKey); + return accountIds.map((accountId, index) => { + return { + derivationPath: modal_1.modalState.derivationPath, + publicKey, + accountId, + selected: index === 0, + }; + }); + } + catch (e) { + return null; + } +}; +exports.resolveAccounts = resolveAccounts; +async function connectToWallet(module, qrCodeModal = false) { + if (!modal_1.modalState) { + return; + } + const { selectedWalletId } = modal_1.modalState.selector.store.getState(); + if (selectedWalletId === module.id) { + (0, WalletAccount_1.renderWalletAccount)(module); + return; + } + try { + if (module.type === "injected" && !module.metadata.available) { + return (0, WalletNotInstalled_1.renderWalletNotInstalled)(module); + } + if (module.metadata.deprecated) { + return (0, WalletConnectionFailed_1.renderWalletConnectionFailed)(module, new Error("Wallet is deprecated")); + } + const wallet = await module.wallet(); + await (0, WalletConnecting_1.renderWalletConnecting)(module); + if (wallet.type === "hardware") { + const accounts = await (0, exports.resolveAccounts)(wallet); + if (!accounts || accounts.length < 1) { + return (0, NoLedgerAccountsFound_1.renderNoLedgerAccountsFound)(module); + } + if (accounts.length === 1) { + return (0, LedgerAccountsOverviewList_1.renderLedgerAccountsOverviewList)(module, accounts, accounts); + } + else { + return (0, LedgerSelectAccount_1.renderLedgerSelectAccount)(module, accounts); + } + } + if (wallet.type === "bridge") { + const subscription = modal_1.modalState.selector.on("uriChanged", ({ uri }) => { + (0, ScanQRCode_1.renderScanQRCode)(module, { + uri, + handleOpenDefaultModal: () => { + connectToWallet(module, true); + }, + }); + }); + await wallet.signIn({ + contractId: modal_1.modalState.options.contractId, + methodNames: modal_1.modalState.options.methodNames, + qrCodeModal, + }); + subscription.remove(); + modal_1.modalState.container.children[0].classList.remove("open"); + modal_1.modalState.emitter.emit("onHide", { hideReason: "wallet-navigation" }); + return; + } + if (wallet.type === "browser") { + await wallet.signIn({ + contractId: modal_1.modalState.options.contractId, + methodNames: modal_1.modalState.options.methodNames, + successUrl: wallet.metadata.successUrl, + failureUrl: wallet.metadata.failureUrl, + }); + modal_1.modalState.container.children[0].classList.remove("open"); + modal_1.modalState.emitter.emit("onHide", { hideReason: "wallet-navigation" }); + return; + } + await wallet.signIn({ + contractId: modal_1.modalState.options.contractId, + methodNames: modal_1.modalState.options.methodNames, + }); + modal_1.modalState.container.children[0].classList.remove("open"); + modal_1.modalState.emitter.emit("onHide", { hideReason: "wallet-navigation" }); + } + catch (err) { + const { name } = module.metadata; + const message = err && typeof err === "object" && "message" in err + ? err.message + : "Something went wrong"; + await (0, WalletConnectionFailed_1.renderWalletConnectionFailed)(module, new Error(`Failed to sign in with ${name}: ${message}`)); + } +} +function renderOptionsList(parentClass, modules) { + if (!modal_1.modalState) { + return; + } + for (let i = 0; i < modules.length; i++) { + const module = modules[i]; + if (modules[i].type === "instant-link" && + modal_1.modalState.selector.store.getState().selectedWalletId !== module.id) { + continue; + } + const { name, description, iconUrl } = module.metadata; + document.querySelector(parentClass)?.insertAdjacentHTML("beforeend", ` + + `); + document + .getElementById("module-" + module.id) + ?.addEventListener("click", () => { + document.querySelectorAll(".selected-wallet").forEach((element) => { + element.classList.remove("selected-wallet"); + }); + document + .getElementById("module-" + module.id) + ?.classList.add("selected-wallet"); + if (module.type === "hardware") { + return (0, ConnectHardwareWallet_1.renderConnectHardwareWallet)(module); + } + connectToWallet(module, false); + }); + } +} +const renderWalletOptions = () => { + if (!modal_1.modalState) { + return; + } + const moreWallets = []; + const recentlySignedInWallets = []; + modal_1.modalState.modules.forEach((module) => { + if (modal_1.modalState?.selector.store + .getState() + .recentlySignedInWallets.includes(module.id)) { + recentlySignedInWallets.push(module); + } + else { + moreWallets.push(module); + } + }); + const optionsWrapper = document.querySelector(".wallet-options-wrapper"); + if (optionsWrapper) { + optionsWrapper.innerHTML = ""; + } + if (modal_1.modalState.selector.options.optimizeWalletOrder && + recentlySignedInWallets.length > 0) { + optionsWrapper?.insertAdjacentHTML("beforeend", ` +
    +
    Recent
    +
    +
    + `); + optionsWrapper?.insertAdjacentHTML("beforeend", ` +
    +
    More
    +
    +
    + `); + renderOptionsList(".recent-options-list-content", recentlySignedInWallets); + if (modal_1.modalState.selector.options.randomizeWalletOrder) { + renderOptionsList(".more-options-list-content", moreWallets.sort(() => Math.random() - 0.5)); + } + else { + renderOptionsList(".more-options-list-content", moreWallets); + } + } + else { + optionsWrapper?.insertAdjacentHTML("beforeend", `
    `); + renderOptionsList(".options-list", modal_1.modalState.modules); + } +}; +const handleSwitchChange = () => { + if (!modal_1.modalState) { + return; + } + isChecked = !isChecked; + modal_1.modalState.selector.setRememberRecentWallets(); + renderWalletOptions(); +}; +function renderModal() { + if (!modal_1.modalState) { + return; + } + const { rememberRecentWallets, selectedWalletId } = modal_1.modalState.selector.store.getState(); + isChecked = rememberRecentWallets === "enabled"; + modal_1.modalState.container.innerHTML = ` +
    +
    +
    + + +
    +
    + `; + document + .getElementById("rememberWalletSwitch") + ?.addEventListener("change", handleSwitchChange); + const moreWallets = []; + const recentlySignedInWallets = []; + modal_1.modalState.modules.forEach((module) => { + if (modal_1.modalState?.selector.store + .getState() + .recentlySignedInWallets.includes(module.id)) { + recentlySignedInWallets.push(module); + } + else { + moreWallets.push(module); + } + }); + if (modal_1.modalState.selector.options.optimizeWalletOrder && + recentlySignedInWallets.length > 0) { + document.querySelector(".wallet-options-wrapper")?.insertAdjacentHTML("beforeend", ` +
    +
    Recent
    +
    +
    + `); + document.querySelector(".wallet-options-wrapper")?.insertAdjacentHTML("beforeend", ` +
    +
    More
    +
    +
    + `); + renderOptionsList(".recent-options-list-content", recentlySignedInWallets); + if (modal_1.modalState.selector.options.randomizeWalletOrder) { + renderOptionsList(".more-options-list-content", moreWallets.sort(() => Math.random() - 0.5)); + } + else { + renderOptionsList(".more-options-list-content", moreWallets); + } + if (!selectedWalletId && recentlySignedInWallets.length > 0) { + const firstWallet = recentlySignedInWallets[0]; + document + .querySelector(`#module-${firstWallet.id}`) + ?.classList.add("selected-wallet"); + } + } + else { + document + .querySelector(".wallet-options-wrapper") + ?.insertAdjacentHTML("beforeend", `
    `); + renderOptionsList(".options-list", modal_1.modalState.modules); + } + document + .querySelector(".nws-modal-overlay") + ?.addEventListener("click", () => { + if (!modal_1.modalState) { + return; + } + modal_1.modalState.container.children[0].classList.remove("open"); + modal_1.modalState.emitter.emit("onHide", { hideReason: "user-triggered" }); + }); + // TODO: Better handle `click` event listener for close-button. + if (initialRender) { + document.addEventListener("click", (e) => { + if (!modal_1.modalState) { + return; + } + const target = e.target; + if (target && target.className === "close-button") { + modal_1.modalState.container.children[0].classList.remove("open"); + modal_1.modalState.emitter.emit("onHide", { hideReason: "user-triggered" }); + } + }); + initialRender = false; + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/index.d.ts b/packages/modal-ui-js/dist/esm/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/index.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/index.js b/packages/modal-ui-js/dist/esm/core/src/index.js new file mode 100644 index 000000000..a545ffa59 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/index.js @@ -0,0 +1,5 @@ +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export { EventEmitter } from "./lib/services"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/constants.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/constants.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/constants.js b/packages/modal-ui-js/dist/esm/core/src/lib/constants.js new file mode 100644 index 000000000..a75f1a50e --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/constants.js @@ -0,0 +1,11 @@ +export const PACKAGE_NAME = "near-wallet-selector"; +export const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export const REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +export const CONTRACT = "contract"; +export const PENDING_CONTRACT = "contract:pending"; +export const SELECTED_WALLET_ID = `selectedWalletId`; +export const PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/detect-browser.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/detect-browser.js b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..c4e583914 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,70 @@ +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +export const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/getActiveAccount.js b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..b2db314cb --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,3 @@ +export const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/index.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/index.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/index.js b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/index.js new file mode 100644 index 000000000..69aaf908c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/index.js @@ -0,0 +1,5 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/payload.js b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..f2a7f147e --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,97 @@ +import { serialize } from "borsh"; +export const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +export const payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +export const serializeNep413 = (signMessageParams) => { + const payload = createPayload(signMessageParams); + return Buffer.from(serialize(payloadSchema, payload)); +}; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..f08e83f02 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,39 @@ +import { serialize } from "borsh"; +import { sha256 } from "js-sha256"; +import { payloadSchema } from "./payload"; +import { publicKeyFrom } from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import { JsonRpcProvider } from "@near-js/providers"; +export const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = serialize(payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = publicKeyFrom(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +export const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/waitFor.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/waitFor.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/helpers/waitFor.js b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..55fc5398f --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/helpers/waitFor.js @@ -0,0 +1,22 @@ +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +export const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/ar.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/bg.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/en.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/es.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/hi.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/hr.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/ko.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/mk.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/sl.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/sr.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/vi.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/locale/zh.json b/packages/modal-ui-js/dist/esm/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/options.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/options.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/options.js b/packages/modal-ui-js/dist/esm/core/src/lib/options.js new file mode 100644 index 000000000..fa6b65f26 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/options.js @@ -0,0 +1,40 @@ +import { WebStorageService } from "./services"; +export const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +export const resolveNetwork = (network) => { + return typeof network === "string" ? getNetworkPreset(network) : network; +}; +export const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: resolveNetwork(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new WebStorageService(), + }; +}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/options.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/options.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/options.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/options.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/options.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..304200d75 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,16 @@ +import { EventEmitter as NEventEmitter } from "events"; +export class EventEmitter { + emitter = new NEventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/index.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/index.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/index.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/index.js new file mode 100644 index 000000000..5301a0f98 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/index.js @@ -0,0 +1,11 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..d1ca57bc4 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,32 @@ +export class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +export const logger = new Logger(); diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..bfcf13b62 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,43 @@ +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +export class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new JsonRpcProvider({ url })) + : []; + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..a9175d614 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,25 @@ +const KEY_DELIMITER = ":"; +export class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/storage.service.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/web-storage.service.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..3b6ee32f5 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,20 @@ +export class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..d5aa498d4 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,321 @@ +import { EventEmitter } from "../event-emitter/event-emitter.service"; +import { Logger, logger } from "../logger/logger.service"; +import { RECENTLY_SIGNED_IN_WALLETS, PACKAGE_NAME, PENDING_CONTRACT, PENDING_SELECTED_WALLET_ID, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "../../constants"; +import { JsonStorage } from "../storage/json-storage.service"; +export class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger.log(`Failed to validate ${wallet.id} during setup`); + logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger.log("Failed to sign out existing wallet"); + logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger.log(`Failed to sign out ${wallet.id}`); + logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new Logger(module.id), + storage: new JsonStorage(this.storage, [PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger.log("Failed to setup module"); + logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger.error("Failed to sign in to wallet. " + err); + } + } + } +} diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/store.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/store.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/store.js b/packages/modal-ui-js/dist/esm/core/src/lib/store.js new file mode 100644 index 000000000..32dc79078 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/store.js @@ -0,0 +1,154 @@ +import { Subject, BehaviorSubject, scan } from "rxjs"; +import { logger, JsonStorage } from "./services"; +import { PACKAGE_NAME, CONTRACT, SELECTED_WALLET_ID, RECENTLY_SIGNED_IN_WALLETS, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "./constants"; +const reducer = (state, action) => { + logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? REMEMBER_RECENT_WALLETS_STATE.DISABLED + : REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +export const createStore = async (storage) => { + const jsonStorage = new JsonStorage(storage, PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(CONTRACT), + selectedWalletId: await jsonStorage.getItem(SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new BehaviorSubject(initialState); + const actions$ = new Subject(); + actions$.pipe(scan(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, CONTRACT, "contract"); + syncStorage(prevState, state, RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/store.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/store.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/store.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/store.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/store.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/testUtils.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/testUtils.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/testUtils.js b/packages/modal-ui-js/dist/esm/core/src/lib/testUtils.js new file mode 100644 index 000000000..7e90e1ce8 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/testUtils.js @@ -0,0 +1,103 @@ +// Remove Jest import +// import * as jest from "jest"; +import { mock } from "jest-mock-extended"; +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, WalletModules } from "./services"; +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +export const mockWallet = async (factory, deps) => { + const { options, storage } = resolveOptions({ + network: getNetworkPreset("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new EventEmitter(); + const store = await createStore(storage); + const walletModules = new WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || mock(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/translate/translate.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/translate/translate.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/translate/translate.js b/packages/modal-ui-js/dist/esm/core/src/lib/translate/translate.js new file mode 100644 index 000000000..610c02a94 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/translate/translate.js @@ -0,0 +1,73 @@ +import en from "../locale/en.json"; +import es from "../locale/es.json"; +import zh from "../locale/zh.json"; +import bg from "../locale/bg.json"; +import ko from "../locale/ko.json"; +import vi from "../locale/vi.json"; +import hi from "../locale/hi.json"; +import ar from "../locale/ar.json"; +import hr from "../locale/hr.json"; +import mk from "../locale/mk.json"; +import sl from "../locale/sl.json"; +import sr from "../locale/sr.json"; +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en; + case "es": + return es; + case "zh": + return zh; + case "bg": + return bg; + case "ko": + return ko; + case "vi": + return vi; + case "hi": + return hi; + case "ar": + return ar; + case "hr": + return hr; + case "mk": + return mk; + case "sl": + return sl; + case "sr": + return sr; + default: + return en; + } +}; +let chosenLang; +export const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +export const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/utils.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/utils.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/utils.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/utils.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/utils.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.js b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..af67afbb6 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.js @@ -0,0 +1,79 @@ +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, Logger, WalletModules, Provider } from "./services"; +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export const setupWalletSelector = async (params) => { + const { options, storage } = resolveOptions(params); + Logger.debug = options.debug; + const emitter = new EventEmitter(); + const store = await createStore(storage); + const network = await getNetworkPreset(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet-selector.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet/index.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet/index.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet/index.js b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/index.js new file mode 100644 index 000000000..bd35cba8b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/index.js @@ -0,0 +1,2 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet/transactions.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet/transactions.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/transactions.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet/wallet.types.d.ts b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/core/src/lib/wallet/wallet.types.js b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/core/src/lib/wallet/wallet.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/index.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/index.d.ts new file mode 100644 index 000000000..f30fecabf --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupModal } from "./lib/modal"; +export type { WalletSelectorModal, ModalOptions, Theme, ModalEvents, } from "./lib/modal.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/index.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/index.d.ts.map new file mode 100644 index 000000000..8a8c34d43 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,WAAW,GACZ,MAAM,mBAAmB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/index.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/index.js new file mode 100644 index 000000000..bb42f29c2 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/index.js @@ -0,0 +1 @@ +export { setupModal } from "./lib/modal"; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts new file mode 100644 index 000000000..618c83ac5 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderConnectHardwareWallet(module: ModuleState): void; +//# sourceMappingURL=ConnectHardwareWallet.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts.map new file mode 100644 index 000000000..96bb031ad --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ConnectHardwareWallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectHardwareWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ConnectHardwareWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQtE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QA+CtE"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ConnectHardwareWallet.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ConnectHardwareWallet.js new file mode 100644 index 000000000..7f2fae8b0 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ConnectHardwareWallet.js @@ -0,0 +1,46 @@ +import { DEFAULT_DERIVATION_PATH, modalState } from "../modal"; +import { connectToWallet } from "../render-modal"; +import { renderSpecifyDerivationPath } from "./SpecifyDerivationPath"; +import { translate } from "@near-wallet-selector/core"; +import { CloseIcon } from "./icons/CloseIcon"; +import { LedgerDeviceIcon } from "./icons/LedgerDeviceIcon"; +export function renderConnectHardwareWallet(module) { + if (!modalState) { + return; + } + modalState.derivationPath = DEFAULT_DERIVATION_PATH; + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    + ${translate("modal.ledger.connectWithLedger")} +

    + +
    +
    +
    +
    +
    + ${LedgerDeviceIcon} +
    +
    +

    ${translate("modal.ledger.makeSureYourLedger")}

    +

    ${translate("modal.ledger.specifyHDPath")}

    +
    +
    +
    +
    +
    + `; + document.getElementById("continue-button")?.addEventListener("click", () => { + connectToWallet(module, false); + }); + document + .getElementById("specify-derivation-path-button") + ?.addEventListener("click", () => { + renderSpecifyDerivationPath(module); + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/GetAWallet.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/GetAWallet.d.ts new file mode 100644 index 000000000..0302ef02d --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/GetAWallet.d.ts @@ -0,0 +1,2 @@ +export declare function renderGetAWallet(): Promise; +//# sourceMappingURL=GetAWallet.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/GetAWallet.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/GetAWallet.d.ts.map new file mode 100644 index 000000000..6660df259 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/GetAWallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetAWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/GetAWallet.ts"],"names":[],"mappings":"AA+BA,wBAAsB,gBAAgB,kBAmGrC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/GetAWallet.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/GetAWallet.js new file mode 100644 index 000000000..f84858f44 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/GetAWallet.js @@ -0,0 +1,94 @@ +import { modalState } from "../modal"; +import { renderWhatIsAWallet } from "./WhatIsAWallet"; +import { translate } from "@near-wallet-selector/core"; +import { BackArrowIcon } from "./icons/BackArrowIcon"; +import { CloseIcon } from "./icons/CloseIcon"; +import { QRIcon } from "./icons/QRIcon"; +import { LinkIcon } from "./icons/LinkIcon"; +function getWalletUrl(module) { + if (!modalState) { + return; + } + let url = ""; + if (module.type === "injected") { + url = module.metadata.downloadUrl; + } + if (module.type === "browser") { + url = module.metadata.walletUrl; + } + return url; +} +export async function renderGetAWallet() { + if (!modalState) { + return; + } + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    + +
    +

    ${translate("modal.wallet.getAWallet")}

    + +
    +
    +
    + +
    +
    +
    + `; + const filterByType = (item) => { + return (item.type !== "bridge" && + item.type !== "hardware" && + item.type !== "instant-link"); + }; + const filteredModules = modalState.modules.filter(filterByType); + for (let i = 0; i < filteredModules.length; i++) { + const qrIcon = ["nearfi", "here-wallet"].includes(filteredModules[i].id); + const hereWalletType = filteredModules[i].id === "here-wallet" ? "mobile" : ""; + const walletUrl = getWalletUrl(filteredModules[i]); + document.getElementById("wallets")?.insertAdjacentHTML("beforeend", ` +
    +
    + ${qrIcon && walletUrl + ? `${QRIcon}` + : !qrIcon && walletUrl + ? `${LinkIcon}` + : ``} + +
    +
    + ${filteredModules[i].metadata.name}
    +
    +
    ${filteredModules[i].metadata.name}
    +
    ${translate(`modal.walletTypes.${hereWalletType || filteredModules[i].type}`)}
    +
    +
    +`); + } + Array.from(document.querySelectorAll(".single-wallet-get")).forEach((button) => { + button.addEventListener("click", () => { + if (!modalState) { + return; + } + const module = modalState.modules.find((m) => m.id === button.id); + if (!module) { + return; + } + const walletUrl = getWalletUrl(module); + if (walletUrl) { + window.open(walletUrl, "_blank"); + } + }); + }); + document.getElementById("back-button")?.addEventListener("click", () => { + renderWhatIsAWallet(); + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts new file mode 100644 index 000000000..d525f00bf --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts @@ -0,0 +1,4 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +import type { HardwareWalletAccountState } from "../render-modal"; +export declare function renderLedgerAccountsOverviewList(module: ModuleState, accounts: Array, selectedAccounts: Array): Promise; +//# sourceMappingURL=LedgerAccountsOverviewList.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts.map new file mode 100644 index 000000000..c9eec0f57 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LedgerAccountsOverviewList.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/LedgerAccountsOverviewList.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAQlE,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,EAC3C,gBAAgB,EAAE,KAAK,CAAC,0BAA0B,CAAC,iBAuEpD"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.js new file mode 100644 index 000000000..58f234659 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerAccountsOverviewList.js @@ -0,0 +1,68 @@ +import { modalState } from "../modal"; +import { renderLedgerSelectAccount } from "./LedgerSelectAccount"; +import { renderWalletConnectionFailed } from "./WalletConnectionFailed"; +import { translate } from "@near-wallet-selector/core"; +import { BackArrowIcon } from "./icons/BackArrowIcon"; +import { CloseIcon } from "./icons/CloseIcon"; +export async function renderLedgerAccountsOverviewList(module, accounts, selectedAccounts) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    + +
    +

    + ${translate("modal.ledger.connecting")} ${selectedAccounts.length} ${translate("modal.ledger.ofAccounts")} +

    + +
    +
    +
    +
    +

    + ${translate("modal.ledger.overviewTheListOfAuthorized")} +

    +
    +
    + +
    +
    +
    +
    + `; + for (let i = 0; i < selectedAccounts.length; i++) { + document.getElementById("accounts")?.insertAdjacentHTML("beforeend", ` +
    + +
    + `); + } + document.getElementById("back-button")?.addEventListener("click", () => { + renderLedgerSelectAccount(module, accounts); + }); + document + .getElementById("finish-button") + ?.addEventListener("click", async () => { + try { + if (!modalState) { + return; + } + const wallet = await module.wallet(); + wallet.signIn({ + contractId: modalState.options.contractId, + methodNames: modalState.options.methodNames, + accounts: selectedAccounts, + }); + modalState.container.children[0].classList.remove("open"); + modalState.emitter.emit("onHide", { hideReason: "wallet-navigation" }); + } + catch (err) { + await renderWalletConnectionFailed(module, err); + } + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts new file mode 100644 index 000000000..1a6ae99aa --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts @@ -0,0 +1,4 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +import type { HardwareWalletAccountState } from "../render-modal"; +export declare function renderLedgerSelectAccount(module: ModuleState, accounts: Array): Promise; +//# sourceMappingURL=LedgerSelectAccount.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts.map new file mode 100644 index 000000000..10a0e3f14 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerSelectAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LedgerSelectAccount.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/LedgerSelectAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAOlE,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,iBA6E5C"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerSelectAccount.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerSelectAccount.js new file mode 100644 index 000000000..b223796a0 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/LedgerSelectAccount.js @@ -0,0 +1,57 @@ +import { modalState } from "../modal"; +import { renderLedgerAccountsOverviewList } from "./LedgerAccountsOverviewList"; +import { renderSpecifyDerivationPath } from "./SpecifyDerivationPath"; +import { translate } from "@near-wallet-selector/core"; +import { BackArrowIcon } from "./icons/BackArrowIcon"; +import { CloseIcon } from "./icons/CloseIcon"; +export async function renderLedgerSelectAccount(module, accounts) { + if (!modalState) { + return; + } + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    ${translate("modal.ledger.selectYourAccounts")}

    + +
    +
    +
    + +
    + `; + for (let i = 0; i < accounts.length; i++) { + document.getElementById("accounts")?.insertAdjacentHTML("beforeend", ` + + `); + } + document + .getElementById("change-derivation-path-button") + ?.addEventListener("click", () => { + renderSpecifyDerivationPath(module); + }); + document.getElementById("connect-button")?.addEventListener("click", (e) => { + e.preventDefault(); + const accountCheckStatuses = Array.from(document.querySelectorAll("input[name='account']")).map((el) => el.checked); + const checkedAccounts = accounts.filter((_account, i) => accountCheckStatuses[i]); + if (checkedAccounts.length < 1) { + return; + } + renderLedgerAccountsOverviewList(module, accounts, checkedAccounts); + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts new file mode 100644 index 000000000..69184ebc5 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderNoLedgerAccountsFound(module: ModuleState): Promise; +//# sourceMappingURL=NoLedgerAccountsFound.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts.map new file mode 100644 index 000000000..b1865938c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/NoLedgerAccountsFound.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NoLedgerAccountsFound.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/NoLedgerAccountsFound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMtE,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,iBA0B5E"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/NoLedgerAccountsFound.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/NoLedgerAccountsFound.js new file mode 100644 index 000000000..a33bc0f63 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/NoLedgerAccountsFound.js @@ -0,0 +1,30 @@ +import { renderConnectHardwareWallet } from "./ConnectHardwareWallet"; +import { translate } from "@near-wallet-selector/core"; +import { BackArrowIcon } from "./icons/BackArrowIcon"; +import { CloseIcon } from "./icons/CloseIcon"; +export async function renderNoLedgerAccountsFound(module) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    + ${translate("modal.ledger.noAccountsFound")} +

    + +
    +
    +
    +
    +

    + ${translate("modal.ledger.cantFindAnyAccount")} + MyNearWallet + ${translate("modal.ledger.orConnectAnAnotherLedger")} +

    +
    +
    +
    + `; + document.getElementById("back-button")?.addEventListener("click", () => { + renderConnectHardwareWallet(module); + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ScanQRCode.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ScanQRCode.d.ts new file mode 100644 index 000000000..79d8632ab --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ScanQRCode.d.ts @@ -0,0 +1,6 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderScanQRCode(module: ModuleState, params: { + uri: string; + handleOpenDefaultModal: () => void; +}): Promise; +//# sourceMappingURL=ScanQRCode.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ScanQRCode.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ScanQRCode.d.ts.map new file mode 100644 index 000000000..064a380ba --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ScanQRCode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ScanQRCode.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ScanQRCode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAStE,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,sBAAsB,EAAE,MAAM,IAAI,CAAA;CAAE,iBAqF5D"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ScanQRCode.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ScanQRCode.js new file mode 100644 index 000000000..d297d0078 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/ScanQRCode.js @@ -0,0 +1,78 @@ +import { translate } from "@near-wallet-selector/core"; +import { connectToWallet } from "../render-modal"; +import copy from "copy-to-clipboard"; +import * as QRCode from "qrcode"; +import { CloseIcon } from "./icons/CloseIcon"; +import { CopyIcon } from "./icons/CopyIcon"; +export async function renderScanQRCode(module, params) { + async function formatQRCodeImage(data) { + const dataString = await QRCode.toString(data, { margin: 0, type: "svg" }); + return dataString; + } + const svg = await formatQRCodeImage(params.uri); + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    ${translate("modal.qr.scanWithYourMobile")}

    + +
    +
    +
    + ${svg} +
    +
    +
    + ${CopyIcon} + ${translate("modal.qr.copyToClipboard")} +
    +
    +
    +

    ${translate("modal.qr.preferTheOfficial")} ${module.metadata.name}?

    + +
    +
    +
    +`; + document.getElementById("continue-button")?.addEventListener("click", () => { + connectToWallet(module, false); + }); + const copyBtnElement = document.getElementById("copy-uri-to-clipboard"); + const notificationElement = document.getElementById("uri-copy-notification"); + const showURICopyNotification = (message) => { + if (notificationElement && copyBtnElement) { + notificationElement.innerHTML = message; + notificationElement.style.display = "block"; + copyBtnElement.style.display = "none"; + } + }; + const hideNotification = () => { + if (notificationElement && copyBtnElement) { + copyBtnElement.style.display = "flex"; + notificationElement.style.display = "none"; + } + }; + document + .getElementById("copy-uri-to-clipboard") + ?.addEventListener("click", () => { + if (!params.uri) { + return; + } + const success = copy(params.uri); + if (success) { + showURICopyNotification(translate("modal.qr.copiedToClipboard")); + setTimeout(() => hideNotification(), 1200); + } + else { + showURICopyNotification(translate("modal.qr.failedToCopy")); + setTimeout(() => hideNotification(), 1200); + } + }); + document + .getElementById("default-modal-trigger") + ?.addEventListener("click", () => { + params.handleOpenDefaultModal(); + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts new file mode 100644 index 000000000..109015253 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderSpecifyDerivationPath(module: ModuleState): void; +//# sourceMappingURL=SpecifyDerivationPath.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts.map new file mode 100644 index 000000000..b6921d3ff --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/SpecifyDerivationPath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SpecifyDerivationPath.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/SpecifyDerivationPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAetE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QAoHtE"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/SpecifyDerivationPath.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/SpecifyDerivationPath.js new file mode 100644 index 000000000..147cd3dbe --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/SpecifyDerivationPath.js @@ -0,0 +1,114 @@ +import { modalState } from "../modal"; +import { resolveAccounts } from "../render-modal"; +import { renderConnectHardwareWallet } from "./ConnectHardwareWallet"; +import { renderLedgerAccountsOverviewList } from "./LedgerAccountsOverviewList"; +import { renderLedgerSelectAccount } from "./LedgerSelectAccount"; +import { renderNoLedgerAccountsFound } from "./NoLedgerAccountsFound"; +import { renderWalletConnecting } from "./WalletConnecting"; +import { renderWalletConnectionFailed } from "./WalletConnectionFailed"; +import { translate } from "@near-wallet-selector/core"; +import { CloseIcon } from "./icons/CloseIcon"; +import { BackArrowIcon } from "./icons/BackArrowIcon"; +import { UpArrowIcon } from "./icons/UpArrowIcon"; +import { DownArrowIcon } from "./icons/DownArrowIcon"; +export function renderSpecifyDerivationPath(module) { + if (!modalState) { + return; + } + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    + ${translate("modal.ledger.specifyHDPath")} +

    + +
    +
    +
    +
    +
    +
    44'/397'/0'/0'/
    +
    +
    +
    + + +
    +
    +
    +

    + ${translate("modal.ledger.enterYourPreferredHDPath")} +

    + +
    + +
    +
    +
    +
    + `; + const derivationPathIndexElement = document.getElementById("derivation-path-index"); + derivationPathIndexElement.innerText = modalState.derivationPath.slice(-2, -1); + document + .getElementById("increase-index-button") + ?.addEventListener("click", () => { + if (!modalState) { + return; + } + const nextIndex = parseInt(derivationPathIndexElement.innerText) + 1; + modalState.derivationPath = + modalState.derivationPath.slice(0, -2) + nextIndex.toString() + "'"; + derivationPathIndexElement.innerText = nextIndex.toString(); + }); + document + .getElementById("decrease-index-button") + ?.addEventListener("click", () => { + if (!modalState) { + return; + } + const nextIndex = parseInt(derivationPathIndexElement.innerText) - 1; + modalState.derivationPath = + modalState.derivationPath.slice(0, -2) + nextIndex.toString() + "'"; + if (nextIndex >= 0) { + derivationPathIndexElement.innerText = nextIndex.toString(); + } + }); + document.getElementById("back-button")?.addEventListener("click", () => { + renderConnectHardwareWallet(module); + }); + document + .getElementById("scan-button") + ?.addEventListener("click", async () => { + try { + const wallet = await module.wallet(); + renderWalletConnecting(module); + const accounts = await resolveAccounts(wallet); + if (!accounts || accounts.length < 1) { + return renderNoLedgerAccountsFound(module); + } + if (accounts.length === 1) { + renderLedgerAccountsOverviewList(module, accounts, accounts); + } + renderLedgerSelectAccount(module, accounts); + } + catch (err) { + await renderWalletConnectionFailed(module, err); + } + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletAccount.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletAccount.d.ts new file mode 100644 index 000000000..af4c5650e --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletAccount.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderWalletAccount(module?: ModuleState | null): Promise; +//# sourceMappingURL=WalletAccount.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletAccount.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletAccount.d.ts.map new file mode 100644 index 000000000..9e44b733d --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletAccount.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAKtE,wBAAsB,mBAAmB,CACvC,MAAM,GAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAW,iBA6B1C"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletAccount.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletAccount.js new file mode 100644 index 000000000..60ca0d21d --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletAccount.js @@ -0,0 +1,30 @@ +import { translate } from "@near-wallet-selector/core"; +import { CloseIcon } from "./icons/CloseIcon"; +import { ConnectionSuccessIcon } from "./icons/ConnectionSuccessIcon"; +export async function renderWalletAccount(module = null) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +

    + +
    +
    +
    +
    +
    + ${module?.metadata.name} +
    +

    ${module?.metadata.name}

    +
    + ${ConnectionSuccessIcon} + + ${translate("modal.wallet.connectionSuccessful")} + +
    +
    +
    +
    + `; +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnecting.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnecting.d.ts new file mode 100644 index 000000000..7fa724d2d --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnecting.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderWalletConnecting(module?: ModuleState | null): Promise; +//# sourceMappingURL=WalletConnecting.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnecting.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnecting.d.ts.map new file mode 100644 index 000000000..846697ecf --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnecting.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletConnecting.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletConnecting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAItE,wBAAsB,sBAAsB,CAC1C,MAAM,GAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAW,iBAqC1C"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnecting.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnecting.js new file mode 100644 index 000000000..2a0e79f7c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnecting.js @@ -0,0 +1,35 @@ +import { translate } from "@near-wallet-selector/core"; +import { CloseIcon } from "./icons/CloseIcon"; +export async function renderWalletConnecting(module = null) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +

    + +
    +
    +
    +
    + ${module?.metadata.name} +
    +

    ${module?.metadata.name}

    +
    +
    loading-icon
    + + ${translate("modal.wallet.connectingTo")} ${module?.metadata.name}... + +
    +
    + + ${translate("modal.wallet.connectingMessage." + module?.type)} + +
    +
    +
    +
    + `; +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts new file mode 100644 index 000000000..5431c3a33 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts @@ -0,0 +1,3 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderWalletConnectionFailed(module: ModuleState, err: Error): Promise; +//# sourceMappingURL=WalletConnectionFailed.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts.map new file mode 100644 index 000000000..6d96a6b2e --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnectionFailed.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletConnectionFailed.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletConnectionFailed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMtE,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,GAAG,EAAE,KAAK,iBA0CX"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnectionFailed.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnectionFailed.js new file mode 100644 index 000000000..a979a5a9f --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletConnectionFailed.js @@ -0,0 +1,39 @@ +import { connectToWallet } from "../render-modal"; +import { translate } from "@near-wallet-selector/core"; +import { CloseIcon } from "./icons/CloseIcon"; +import { ConnectionErrorIcon } from "./icons/ConnectionErrorIcon"; +export async function renderWalletConnectionFailed(module, err) { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +

    + +
    +
    +
    +
    ${module.metadata.name}
    +

    ${module.metadata.name}

    +
    +
    +
    +
    + ${ConnectionErrorIcon} + ${translate("modal.wallet.connectionFailed")} +
    +

    ${err && err.message ? err.message : ""}

    + ${!module?.metadata.deprecated && module?.metadata.available + ? `` + : ""} +
    +
    +
    +
    +
    +
    + `; + document.getElementById("retry-button")?.addEventListener("click", () => { + connectToWallet(module, false); + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts new file mode 100644 index 000000000..c520ff38a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts @@ -0,0 +1,7 @@ +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +export declare function renderWalletNotInstalled(module: ModuleState & { + metadata: { + downloadUrl?: string; + }; +}): void; +//# sourceMappingURL=WalletNotInstalled.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts.map new file mode 100644 index 000000000..00abb420c --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletNotInstalled.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletNotInstalled.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletNotInstalled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAOtE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG;IAC5B,QAAQ,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,QAyDF"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletNotInstalled.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletNotInstalled.js new file mode 100644 index 000000000..c6794c8e5 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WalletNotInstalled.js @@ -0,0 +1,55 @@ +import { modalState } from "../modal"; +import { translate } from "@near-wallet-selector/core"; +import { renderWhatIsAWallet } from "./WhatIsAWallet"; +import { BackArrowIcon } from "./icons/BackArrowIcon"; +import { CloseIcon } from "./icons/CloseIcon"; +export function renderWalletNotInstalled(module) { + if (!modalState) { + return; + } + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +

    +
    +
    +
    +
    +
    ${module.metadata.name} +
    +

    + ${module.metadata.name} +

    +
    +

    + ${translate("modal.install.youllNeedToInstall")} ${module.metadata.name} + ${translate("modal.install.toContinueAfterInstalling")} +   + ${translate("modal.install.refreshThePage")} + +

    +
    + +
    +
    +
    + `; + document.getElementById("back-button")?.addEventListener("click", () => { + renderWhatIsAWallet(); + }); + document + .getElementById("refresh-page-lint") + ?.addEventListener("click", () => { + window.location.reload(); + }); + document.getElementById("download-button")?.addEventListener("click", () => { + if (module.type !== "injected") { + return; + } + window.open(module.metadata.downloadUrl, "_blank"); + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts new file mode 100644 index 000000000..eea9d8063 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts @@ -0,0 +1,2 @@ +export declare function renderWhatIsAWallet(): Promise; +//# sourceMappingURL=WhatIsAWallet.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts.map new file mode 100644 index 000000000..567be8ba5 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WhatIsAWallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WhatIsAWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WhatIsAWallet.ts"],"names":[],"mappings":"AAMA,wBAAsB,mBAAmB,kBAyExC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WhatIsAWallet.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WhatIsAWallet.js new file mode 100644 index 000000000..230bb8285 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/WhatIsAWallet.js @@ -0,0 +1,75 @@ +import { renderGetAWallet } from "./GetAWallet"; +import { translate } from "@near-wallet-selector/core"; +import { CloseIcon } from "./icons/CloseIcon"; +import { KeyIcon } from "./icons/KeyIcon"; +import { FolderIcon } from "./icons/FolderIcon"; +export async function renderWhatIsAWallet() { + document.querySelector(".modal-right").innerHTML = ` +
    +
    +
    +
    +

    ${translate("modal.wallet.whatIsAWallet")}

    + +
    +
    + +
    +
    +
    + ${KeyIcon} +
    +
    +

    ${translate("modal.wallet.secureAndManage")}

    +

    ${translate("modal.wallet.safelyStore")}

    +
    +
    + +
    +
    + ${FolderIcon} +
    +
    +

    ${translate("modal.wallet.logInToAny")}

    +

    ${translate("modal.wallet.noNeedToCreate")}

    +
    +
    + +
    + +
    + +
    +

    + ${translate("modal.wallet.useAWallet")} +

    + +
    + +
    + +
    + +
    +
    + `; + document + .getElementById("get-a-wallet-button") + ?.addEventListener("click", () => { + renderGetAWallet(); + }); + document + .getElementById("get-a-wallet-button-mobile") + ?.addEventListener("click", () => { + renderGetAWallet(); + }); +} diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts new file mode 100644 index 000000000..a3978e44e --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts @@ -0,0 +1,2 @@ +export declare const BackArrowIcon = "\n\n \n \n"; +//# sourceMappingURL=BackArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts.map new file mode 100644 index 000000000..544454b38 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/BackArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BackArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/BackArrowIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,6PAKnB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/BackArrowIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/BackArrowIcon.js new file mode 100644 index 000000000..cc44cb309 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/BackArrowIcon.js @@ -0,0 +1,6 @@ +export const BackArrowIcon = ` + + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts new file mode 100644 index 000000000..06418ca5e --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts @@ -0,0 +1,2 @@ +export declare const CloseIcon = "\n\n \n \n \n"; +//# sourceMappingURL=CloseIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts.map new file mode 100644 index 000000000..a72344cf5 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CloseIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CloseIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/CloseIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,uTAOf,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CloseIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CloseIcon.js new file mode 100644 index 000000000..fc80d5351 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CloseIcon.js @@ -0,0 +1,8 @@ +export const CloseIcon = ` + + + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts new file mode 100644 index 000000000..6780df271 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts @@ -0,0 +1,2 @@ +export declare const ConnectionErrorIcon = "\n\n \n \n \n"; +//# sourceMappingURL=ConnectionErrorIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts.map new file mode 100644 index 000000000..ee2c2f4a7 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionErrorIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/ConnectionErrorIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,8wBA6BzB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.js new file mode 100644 index 000000000..b5ef44e9d --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionErrorIcon.js @@ -0,0 +1,30 @@ +export const ConnectionErrorIcon = ` + + + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts new file mode 100644 index 000000000..f3b3e95a7 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts @@ -0,0 +1,2 @@ +export declare const ConnectionSuccessIcon = "\n\n \n \n"; +//# sourceMappingURL=ConnectionSuccessIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map new file mode 100644 index 000000000..fd09b5100 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionSuccessIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/ConnectionSuccessIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+0BAsB3B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.js new file mode 100644 index 000000000..dd5eb0cbc --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/ConnectionSuccessIcon.js @@ -0,0 +1,23 @@ +export const ConnectionSuccessIcon = ` + + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts new file mode 100644 index 000000000..4fbddc31f --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts @@ -0,0 +1,2 @@ +export declare const CopyIcon = "\n\n \n \n"; +//# sourceMappingURL=CopyIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts.map new file mode 100644 index 000000000..7d54650cf --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CopyIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CopyIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/CopyIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,qlBAsBd,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CopyIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CopyIcon.js new file mode 100644 index 000000000..5f9d31afb --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/CopyIcon.js @@ -0,0 +1,23 @@ +export const CopyIcon = ` + + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts new file mode 100644 index 000000000..6ef64714a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts @@ -0,0 +1,2 @@ +export declare const DownArrowIcon = "\n\n \n"; +//# sourceMappingURL=DownArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts.map new file mode 100644 index 000000000..1cd56b932 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/DownArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DownArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/DownArrowIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,+QAKnB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/DownArrowIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/DownArrowIcon.js new file mode 100644 index 000000000..47693be9a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/DownArrowIcon.js @@ -0,0 +1,6 @@ +export const DownArrowIcon = ` + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts new file mode 100644 index 000000000..4a299bbcf --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts @@ -0,0 +1,2 @@ +export declare const FolderIcon = "\n\n \n \n \n"; +//# sourceMappingURL=FolderIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts.map new file mode 100644 index 000000000..f007f65f1 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/FolderIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FolderIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/FolderIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,wjBAKhB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/FolderIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/FolderIcon.js new file mode 100644 index 000000000..a8ed969d4 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/FolderIcon.js @@ -0,0 +1,6 @@ +export const FolderIcon = ` + + + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts new file mode 100644 index 000000000..3ad31b9fc --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts @@ -0,0 +1,2 @@ +export declare const KeyIcon = "\n\n \n"; +//# sourceMappingURL=KeyIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts.map new file mode 100644 index 000000000..e4d546246 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/KeyIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KeyIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/KeyIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,ynBAGb,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/KeyIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/KeyIcon.js new file mode 100644 index 000000000..1e75c7d5b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/KeyIcon.js @@ -0,0 +1,4 @@ +export const KeyIcon = ` + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts new file mode 100644 index 000000000..4f994de6a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts @@ -0,0 +1,2 @@ +export declare const LedgerDeviceIcon = "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n "; +//# sourceMappingURL=LedgerDeviceIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts.map new file mode 100644 index 000000000..98532cab2 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LedgerDeviceIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/LedgerDeviceIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,ivXAiFrB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.js new file mode 100644 index 000000000..b8484400b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LedgerDeviceIcon.js @@ -0,0 +1,82 @@ +export const LedgerDeviceIcon = ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts new file mode 100644 index 000000000..1bbe4637d --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts @@ -0,0 +1,2 @@ +export declare const LinkIcon = "\n\n \n \n \n"; +//# sourceMappingURL=LinkIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts.map new file mode 100644 index 000000000..131e42efc --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LinkIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LinkIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/LinkIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,g0BA0Bd,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LinkIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LinkIcon.js new file mode 100644 index 000000000..8cd85af36 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/LinkIcon.js @@ -0,0 +1,27 @@ +export const LinkIcon = ` + + + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/QRIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/QRIcon.d.ts new file mode 100644 index 000000000..79a7a537a --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/QRIcon.d.ts @@ -0,0 +1,2 @@ +export declare const QRIcon = "\n\n \n \n \n \n \n \n \n"; +//# sourceMappingURL=QRIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/QRIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/QRIcon.d.ts.map new file mode 100644 index 000000000..a3992b5ba --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/QRIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"QRIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/QRIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,grCAqDZ,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/QRIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/QRIcon.js new file mode 100644 index 000000000..80882e448 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/QRIcon.js @@ -0,0 +1,54 @@ +export const QRIcon = ` + + + + + + + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts new file mode 100644 index 000000000..c0a4c2417 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts @@ -0,0 +1,2 @@ +export declare const UpArrowIcon = "\n\n \n"; +//# sourceMappingURL=UpArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts.map new file mode 100644 index 000000000..f8150b789 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/UpArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UpArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/UpArrowIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,4QAKjB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/UpArrowIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/UpArrowIcon.js new file mode 100644 index 000000000..ad734f933 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/UpArrowIcon.js @@ -0,0 +1,6 @@ +export const UpArrowIcon = ` + + +`; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts new file mode 100644 index 000000000..de0a2f733 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts @@ -0,0 +1,2 @@ +export declare const WarningIcon = "\n\n \n \n \n "; +//# sourceMappingURL=WarningIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts.map new file mode 100644 index 000000000..708e67608 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/WarningIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WarningIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/WarningIcon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,quBAKhB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/WarningIcon.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/WarningIcon.js new file mode 100644 index 000000000..acc3f0b95 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/components/icons/WarningIcon.js @@ -0,0 +1,6 @@ +export const WarningIcon = ` + + + + + `; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.d.ts new file mode 100644 index 000000000..c56e03ca2 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.d.ts @@ -0,0 +1,23 @@ +import type { EventEmitterService, ModuleState, Wallet, WalletSelector } from "@near-wallet-selector/core"; +import type { WalletSelectorModal, ModalOptions, ModalRoute, ModalEvents } from "./modal.types"; +export declare const DEFAULT_DERIVATION_PATH = "44'/397'/0'/0'/1'"; +type ModalState = { + container: HTMLElement; + selector: WalletSelector; + options: ModalOptions; + route: ModalRoute; + modules: Array>; + derivationPath: string; + emitter: EventEmitterService; +}; +export declare let modalState: ModalState | null; +export declare function updateModalState(newModalState: ModalState): void; +/** + * Initiates a modal instance + * @param {WalletSelector} selector Selector + * @param {ModalOptions} options Modal options + * @returns {WalletSelectorModal} Returns a WalletSelectorModal object + */ +export declare const setupModal: (selector: WalletSelector, options: ModalOptions) => WalletSelectorModal; +export {}; +//# sourceMappingURL=modal.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.d.ts.map new file mode 100644 index 000000000..0eed76280 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,MAAM,EACN,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,WAAW,EACZ,MAAM,eAAe,CAAC;AAMvB,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAI3D,KAAK,UAAU,GAAG;IAChB,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC3C,CAAC;AAEF,eAAO,IAAI,UAAU,EAAE,UAAU,GAAG,IAAW,CAAC;AAEhD,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,UAAU,QAEzD;AAQD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aACX,cAAc,WACf,YAAY,KACpB,mBA4GF,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.js new file mode 100644 index 000000000..39769e24b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.js @@ -0,0 +1,115 @@ +import { renderModal } from "./render-modal"; +import { renderWhatIsAWallet } from "./components/WhatIsAWallet"; +import { renderWalletAccount } from "./components/WalletAccount"; +import { allowOnlyLanguage, EventEmitter } from "@near-wallet-selector/core"; +const MODAL_ELEMENT_ID = "near-wallet-selector-modal"; +export const DEFAULT_DERIVATION_PATH = "44'/397'/0'/0'/1'"; +let modalInstance = null; +export let modalState = null; +export function updateModalState(newModalState) { + modalState = newModalState; +} +if (typeof window !== "undefined") { + const el = document.createElement("div"); + el.id = MODAL_ELEMENT_ID; + document.body.appendChild(el); +} +/** + * Initiates a modal instance + * @param {WalletSelector} selector Selector + * @param {ModalOptions} options Modal options + * @returns {WalletSelectorModal} Returns a WalletSelectorModal object + */ +export const setupModal = (selector, options) => { + const emitter = new EventEmitter(); + selector.store.getState().modules.forEach(async (module) => { + if ("topLevelInjected" in module.metadata) { + if (!module.metadata.topLevelInjected) { + return; + } + const wallet = await module.wallet(); + if (wallet.type !== "injected") { + return; + } + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + }); + } + }); + modalState = { + container: document.getElementById(MODAL_ELEMENT_ID), + selector, + options, + route: { + name: "WalletOptions", + }, + modules: [], + derivationPath: DEFAULT_DERIVATION_PATH, + emitter, + }; + modalState.selector.store.observable.subscribe((state) => { + if (!modalState) { + return; + } + if (selector.options.optimizeWalletOrder) { + state.modules.sort((current, next) => { + if (current.metadata.deprecated === next.metadata.deprecated) { + return 0; + } + return current.metadata.deprecated ? 1 : -1; + }); + state.modules.sort((current, next) => { + if (next.metadata.available === current.metadata.available) { + return 0; + } + return next.metadata.available ? 1 : -1; + }); + } + modalState.modules = state.modules; + }); + const close = (e) => { + if (e.key === "Escape") { + if (!modalState) { + return; + } + modalState.container.children[0].classList.remove("open"); + modalState.emitter.emit("onHide", { hideReason: "user-triggered" }); + } + }; + window.addEventListener("keydown", close); + renderModal(); + if (!modalInstance) { + modalInstance = { + show: () => { + if (!modalState) { + return; + } + allowOnlyLanguage(modalState.selector.options.languageCode); + renderModal(); + const selectedWalletId = modalState.selector.store.getState().selectedWalletId; + if (selectedWalletId) { + const module = modalState.modules.find((m) => m.id === selectedWalletId); + renderWalletAccount(module); + } + else { + renderWhatIsAWallet(); + } + modalState.container.children[0].classList.add("open"); + }, + hide: () => { + if (!modalState) { + return; + } + modalState.container.children[0].classList.remove("open"); + }, + on: (eventName, callback) => { + return modalState.emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + modalState.emitter.off(eventName, callback); + }, + }; + } + return modalInstance; +}; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.types.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.types.d.ts new file mode 100644 index 000000000..863368804 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.types.d.ts @@ -0,0 +1,67 @@ +import type { Wallet } from "@near-wallet-selector/core"; +import type { ModuleState } from "@near-wallet-selector/core"; +import type { Subscription } from "@near-wallet-selector/core"; +export type Theme = "dark" | "light" | "auto"; +export interface ModalOptions { + contractId: string; + methodNames?: Array; + theme?: Theme; + description?: string; +} +export type ModalHideReason = "user-triggered" | "wallet-navigation"; +export type ModalEvents = { + onHide: { + hideReason: ModalHideReason; + }; +}; +export interface WalletSelectorModal { + show(): void; + hide(): void; + on(eventName: EventName, callback: (event: ModalEvents[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: ModalEvents[EventName]) => void): void; +} +type AlertMessageModalRouteParams = { + wallet: Wallet; +}; +type WalletOptionsModalRouteParams = { + wallet: Wallet; +}; +type DerivationPathModalRouteParams = { + walletId: string; +}; +type WalletNotInstalledModalRouteParams = { + module: ModuleState; +}; +type WalletNetworkChangedModalRouteParams = { + wallet: Wallet; +}; +type WalletConnectingModalRouteParams = { + wallet: Wallet; +}; +type AlertMessageModalRoute = { + name: "AlertMessage"; + params?: AlertMessageModalRouteParams; +}; +type WalletOptionsModalRoute = { + name: "WalletOptions"; + params?: WalletOptionsModalRouteParams; +}; +type DerivationPathModalRoute = { + name: "DerivationPath"; + params: DerivationPathModalRouteParams; +}; +type WalletNotInstalledModalRoute = { + name: "WalletNotInstalled"; + params?: WalletNotInstalledModalRouteParams; +}; +type WalletNetworkChangedModalRoute = { + name: "WalletNetworkChanged"; + params?: WalletNetworkChangedModalRouteParams; +}; +type WalletConnectingModalRoute = { + name: "WalletConnecting"; + params?: WalletConnectingModalRouteParams; +}; +export type ModalRoute = AlertMessageModalRoute | WalletOptionsModalRoute | DerivationPathModalRoute | WalletNotInstalledModalRoute | WalletNetworkChangedModalRoute | WalletConnectingModalRoute; +export {}; +//# sourceMappingURL=modal.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.types.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.types.d.ts.map new file mode 100644 index 000000000..5915b1039 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QAAE,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,IAAI,CAAC;IACb,EAAE,CAAC,SAAS,SAAS,MAAM,WAAW,EACpC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,GAChD,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,WAAW,EACrC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,GAChD,IAAI,CAAC;CACT;AAED,KAAK,4BAA4B,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,KAAK,oCAAoC,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,4BAA4B,CAAC;CACvC,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,CAAC,EAAE,6BAA6B,CAAC;CACxC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,8BAA8B,CAAC;CACxC,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,CAAC,EAAE,kCAAkC,CAAC;CAC7C,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,CAAC,EAAE,oCAAoC,CAAC;CAC/C,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,CAAC,EAAE,gCAAgC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,sBAAsB,GACtB,uBAAuB,GACvB,wBAAwB,GACxB,4BAA4B,GAC5B,8BAA8B,GAC9B,0BAA0B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.types.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/modal.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/render-modal.d.ts b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/render-modal.d.ts new file mode 100644 index 000000000..e45943eeb --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/render-modal.d.ts @@ -0,0 +1,8 @@ +import type { HardwareWalletAccount, ModuleState, Wallet } from "@near-wallet-selector/core"; +export type HardwareWalletAccountState = HardwareWalletAccount & { + selected: boolean; +}; +export declare const resolveAccounts: (wallet: Wallet) => Promise | null>; +export declare function connectToWallet(module: ModuleState, qrCodeModal?: boolean): Promise; +export declare function renderModal(): void; +//# sourceMappingURL=render-modal.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/render-modal.d.ts.map b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/render-modal.d.ts.map new file mode 100644 index 000000000..61bad6498 --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/render-modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"render-modal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/render-modal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EACrB,WAAW,EACX,MAAM,EACP,MAAM,4BAA4B,CAAC;AAcpC,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC/D,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AA2BF,eAAO,MAAM,eAAe,WAClB,MAAM,KACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAsBlD,CAAC;AAEF,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,WAAW,UAAQ,iBAkGpB;AAgJD,wBAAgB,WAAW,SAkI1B"} \ No newline at end of file diff --git a/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/render-modal.js b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/render-modal.js new file mode 100644 index 000000000..4d93d4b5e --- /dev/null +++ b/packages/modal-ui-js/dist/esm/modal-ui-js/src/lib/render-modal.js @@ -0,0 +1,325 @@ +import { renderConnectHardwareWallet } from "./components/ConnectHardwareWallet"; +import { renderLedgerAccountsOverviewList } from "./components/LedgerAccountsOverviewList"; +import { renderLedgerSelectAccount } from "./components/LedgerSelectAccount"; +import { renderNoLedgerAccountsFound } from "./components/NoLedgerAccountsFound"; +import { renderWalletConnecting } from "./components/WalletConnecting"; +import { renderWalletConnectionFailed } from "./components/WalletConnectionFailed"; +import { renderWalletNotInstalled } from "./components/WalletNotInstalled"; +import { modalState } from "./modal"; +import { renderWalletAccount } from "./components/WalletAccount"; +import { renderScanQRCode } from "./components/ScanQRCode"; +import { translate } from "@near-wallet-selector/core"; +import { WarningIcon } from "./components/icons/WarningIcon"; +let initialRender = true; +let isChecked = false; +const getAccountIds = async (publicKey) => { + if (!modalState) { + return []; + } + const response = await fetch(`${modalState.selector.options.network.indexerUrl}/publicKey/ed25519:${publicKey}/accounts`); + if (!response.ok) { + throw new Error("Failed to get account id from public key"); + } + const accountIds = await response.json(); + if (!Array.isArray(accountIds) || !accountIds.length) { + return []; + } + return accountIds; +}; +export const resolveAccounts = async (wallet) => { + if (!modalState) { + return []; + } + const publicKey = await wallet.getPublicKey(modalState.derivationPath); + try { + const accountIds = await getAccountIds(publicKey); + return accountIds.map((accountId, index) => { + return { + derivationPath: modalState.derivationPath, + publicKey, + accountId, + selected: index === 0, + }; + }); + } + catch (e) { + return null; + } +}; +export async function connectToWallet(module, qrCodeModal = false) { + if (!modalState) { + return; + } + const { selectedWalletId } = modalState.selector.store.getState(); + if (selectedWalletId === module.id) { + renderWalletAccount(module); + return; + } + try { + if (module.type === "injected" && !module.metadata.available) { + return renderWalletNotInstalled(module); + } + if (module.metadata.deprecated) { + return renderWalletConnectionFailed(module, new Error("Wallet is deprecated")); + } + const wallet = await module.wallet(); + await renderWalletConnecting(module); + if (wallet.type === "hardware") { + const accounts = await resolveAccounts(wallet); + if (!accounts || accounts.length < 1) { + return renderNoLedgerAccountsFound(module); + } + if (accounts.length === 1) { + return renderLedgerAccountsOverviewList(module, accounts, accounts); + } + else { + return renderLedgerSelectAccount(module, accounts); + } + } + if (wallet.type === "bridge") { + const subscription = modalState.selector.on("uriChanged", ({ uri }) => { + renderScanQRCode(module, { + uri, + handleOpenDefaultModal: () => { + connectToWallet(module, true); + }, + }); + }); + await wallet.signIn({ + contractId: modalState.options.contractId, + methodNames: modalState.options.methodNames, + qrCodeModal, + }); + subscription.remove(); + modalState.container.children[0].classList.remove("open"); + modalState.emitter.emit("onHide", { hideReason: "wallet-navigation" }); + return; + } + if (wallet.type === "browser") { + await wallet.signIn({ + contractId: modalState.options.contractId, + methodNames: modalState.options.methodNames, + successUrl: wallet.metadata.successUrl, + failureUrl: wallet.metadata.failureUrl, + }); + modalState.container.children[0].classList.remove("open"); + modalState.emitter.emit("onHide", { hideReason: "wallet-navigation" }); + return; + } + await wallet.signIn({ + contractId: modalState.options.contractId, + methodNames: modalState.options.methodNames, + }); + modalState.container.children[0].classList.remove("open"); + modalState.emitter.emit("onHide", { hideReason: "wallet-navigation" }); + } + catch (err) { + const { name } = module.metadata; + const message = err && typeof err === "object" && "message" in err + ? err.message + : "Something went wrong"; + await renderWalletConnectionFailed(module, new Error(`Failed to sign in with ${name}: ${message}`)); + } +} +function renderOptionsList(parentClass, modules) { + if (!modalState) { + return; + } + for (let i = 0; i < modules.length; i++) { + const module = modules[i]; + if (modules[i].type === "instant-link" && + modalState.selector.store.getState().selectedWalletId !== module.id) { + continue; + } + const { name, description, iconUrl } = module.metadata; + document.querySelector(parentClass)?.insertAdjacentHTML("beforeend", ` +
    +
    ${name}
    +
    +
    ${name}
    +
    ${description}
    +
    + ${module.metadata.deprecated + ? ` +
    + ${WarningIcon} +
    + ` + : ""} +
    + `); + document + .getElementById("module-" + module.id) + ?.addEventListener("click", () => { + document.querySelectorAll(".selected-wallet").forEach((element) => { + element.classList.remove("selected-wallet"); + }); + document + .getElementById("module-" + module.id) + ?.classList.add("selected-wallet"); + if (module.type === "hardware") { + return renderConnectHardwareWallet(module); + } + connectToWallet(module, false); + }); + } +} +const renderWalletOptions = () => { + if (!modalState) { + return; + } + const moreWallets = []; + const recentlySignedInWallets = []; + modalState.modules.forEach((module) => { + if (modalState?.selector.store + .getState() + .recentlySignedInWallets.includes(module.id)) { + recentlySignedInWallets.push(module); + } + else { + moreWallets.push(module); + } + }); + const optionsWrapper = document.querySelector(".wallet-options-wrapper"); + if (optionsWrapper) { + optionsWrapper.innerHTML = ""; + } + if (modalState.selector.options.optimizeWalletOrder && + recentlySignedInWallets.length > 0) { + optionsWrapper?.insertAdjacentHTML("beforeend", ` +
    +
    Recent
    +
    +
    + `); + optionsWrapper?.insertAdjacentHTML("beforeend", ` +
    +
    More
    +
    +
    + `); + renderOptionsList(".recent-options-list-content", recentlySignedInWallets); + if (modalState.selector.options.randomizeWalletOrder) { + renderOptionsList(".more-options-list-content", moreWallets.sort(() => Math.random() - 0.5)); + } + else { + renderOptionsList(".more-options-list-content", moreWallets); + } + } + else { + optionsWrapper?.insertAdjacentHTML("beforeend", `
    `); + renderOptionsList(".options-list", modalState.modules); + } +}; +const handleSwitchChange = () => { + if (!modalState) { + return; + } + isChecked = !isChecked; + modalState.selector.setRememberRecentWallets(); + renderWalletOptions(); +}; +export function renderModal() { + if (!modalState) { + return; + } + const { rememberRecentWallets, selectedWalletId } = modalState.selector.store.getState(); + isChecked = rememberRecentWallets === "enabled"; + modalState.container.innerHTML = ` +
    +
    +
    + + +
    +
    + `; + document + .getElementById("rememberWalletSwitch") + ?.addEventListener("change", handleSwitchChange); + const moreWallets = []; + const recentlySignedInWallets = []; + modalState.modules.forEach((module) => { + if (modalState?.selector.store + .getState() + .recentlySignedInWallets.includes(module.id)) { + recentlySignedInWallets.push(module); + } + else { + moreWallets.push(module); + } + }); + if (modalState.selector.options.optimizeWalletOrder && + recentlySignedInWallets.length > 0) { + document.querySelector(".wallet-options-wrapper")?.insertAdjacentHTML("beforeend", ` +
    +
    Recent
    +
    +
    + `); + document.querySelector(".wallet-options-wrapper")?.insertAdjacentHTML("beforeend", ` +
    +
    More
    +
    +
    + `); + renderOptionsList(".recent-options-list-content", recentlySignedInWallets); + if (modalState.selector.options.randomizeWalletOrder) { + renderOptionsList(".more-options-list-content", moreWallets.sort(() => Math.random() - 0.5)); + } + else { + renderOptionsList(".more-options-list-content", moreWallets); + } + if (!selectedWalletId && recentlySignedInWallets.length > 0) { + const firstWallet = recentlySignedInWallets[0]; + document + .querySelector(`#module-${firstWallet.id}`) + ?.classList.add("selected-wallet"); + } + } + else { + document + .querySelector(".wallet-options-wrapper") + ?.insertAdjacentHTML("beforeend", `
    `); + renderOptionsList(".options-list", modalState.modules); + } + document + .querySelector(".nws-modal-overlay") + ?.addEventListener("click", () => { + if (!modalState) { + return; + } + modalState.container.children[0].classList.remove("open"); + modalState.emitter.emit("onHide", { hideReason: "user-triggered" }); + }); + // TODO: Better handle `click` event listener for close-button. + if (initialRender) { + document.addEventListener("click", (e) => { + if (!modalState) { + return; + } + const target = e.target; + if (target && target.className === "close-button") { + modalState.container.children[0].classList.remove("open"); + modalState.emitter.emit("onHide", { hideReason: "user-triggered" }); + } + }); + initialRender = false; + } +} diff --git a/packages/modal-ui-js/jest.config.ts b/packages/modal-ui-js/jest.config.ts index 4473fdcd7..61db33e4a 100644 --- a/packages/modal-ui-js/jest.config.ts +++ b/packages/modal-ui-js/jest.config.ts @@ -7,7 +7,7 @@ export default { "^.+\\.[tj]s$": [ "ts-jest", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", }, ], }, diff --git a/packages/modal-ui-js/package.json b/packages/modal-ui-js/package.json index 97819b23c..1733bb1cc 100644 --- a/packages/modal-ui-js/package.json +++ b/packages/modal-ui-js/package.json @@ -2,6 +2,36 @@ "name": "@near-wallet-selector/modal-ui-js", "version": "8.9.13", "description": "Modal UI package for NEAR wallet Selector", + "scripts": { + "compile:esm": "tsc -p tsconfig.esm.json", + "compile:cjs": "tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/modal-ui-js/src/index.d.ts", + "main": "./dist/cjs/modal-ui-js/src/index.js", + "module": "./dist/esm/modal-ui-js/src/index.js", + "type": "module", + "dependencies": { + "copy-to-clipboard": "*", + "qrcode": "*", + "react": "*" + }, + "devDependencies": { + "@types/node": "*", + "jest": "*", + "rimraf": "*", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/modal-ui-js/src/index.js", + "import": "./dist/esm/modal-ui-js/src/index.js" + } + }, "keywords": [ "near", "blockchain", diff --git a/packages/modal-ui-js/project.json b/packages/modal-ui-js/project.json deleted file mode 100644 index eef7fb3be..000000000 --- a/packages/modal-ui-js/project.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "modal-ui-js", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/modal-ui-js/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/modal-ui-js", - "tsConfig": "packages/modal-ui-js/tsconfig.lib.json", - "project": "packages/modal-ui-js/package.json", - "entryFile": "packages/modal-ui-js/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/modal-ui-js/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/modal-ui-js/**/*.css", - "input": ".", - "output": "." - } - ] - } - }, - "publish": { - "executor": "nx:run-commands", - "options": { - "command": "node tools/scripts/publish.mjs modal-ui-js {args.ver} {args.tag}" - }, - "dependsOn": [ - { - "target": "build" - } - ] - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/modal-ui-js/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/modal-ui-js"], - "options": { - "jestConfig": "packages/modal-ui-js/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": [] -} diff --git a/packages/modal-ui-js/tsconfig.cjs.json b/packages/modal-ui-js/tsconfig.cjs.json new file mode 100644 index 000000000..9f12707d4 --- /dev/null +++ b/packages/modal-ui-js/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/modal-ui-js/tsconfig.esm.json b/packages/modal-ui-js/tsconfig.esm.json new file mode 100644 index 000000000..a51c6f15e --- /dev/null +++ b/packages/modal-ui-js/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/modal-ui-js/tsconfig.json b/packages/modal-ui-js/tsconfig.json index a00a151cb..4d8b27c19 100644 --- a/packages/modal-ui-js/tsconfig.json +++ b/packages/modal-ui-js/tsconfig.json @@ -1,25 +1,14 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "allowJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*"] } - ] + }, + "include": ["src/**/*"] } diff --git a/packages/modal-ui-js/tsconfig.lib.json b/packages/modal-ui-js/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/modal-ui-js/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/modal-ui-js/tsconfig.spec.json b/packages/modal-ui-js/tsconfig.spec.json deleted file mode 100644 index 546f12877..000000000 --- a/packages/modal-ui-js/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} diff --git a/packages/modal-ui/dist/cjs/core/src/index.d.ts b/packages/modal-ui/dist/cjs/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/index.d.ts.map b/packages/modal-ui/dist/cjs/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/index.js b/packages/modal-ui/dist/cjs/core/src/index.js new file mode 100644 index 000000000..cfb828bf8 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = exports.allowOnlyLanguage = exports.translate = exports.serializeNep413 = exports.verifySignature = exports.verifyFullKeyBelongsToUser = exports.isCurrentBrowserSupported = exports.getActiveAccount = exports.waitFor = exports.EventEmitter = exports.setupWalletSelector = void 0; +var wallet_selector_js_1 = require("./lib/wallet-selector.js"); +Object.defineProperty(exports, "setupWalletSelector", { enumerable: true, get: function () { return wallet_selector_js_1.setupWalletSelector; } }); +var services_1 = require("./lib/services"); +Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return services_1.EventEmitter; } }); +var helpers_1 = require("./lib/helpers"); +Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return helpers_1.waitFor; } }); +Object.defineProperty(exports, "getActiveAccount", { enumerable: true, get: function () { return helpers_1.getActiveAccount; } }); +Object.defineProperty(exports, "isCurrentBrowserSupported", { enumerable: true, get: function () { return helpers_1.isCurrentBrowserSupported; } }); +Object.defineProperty(exports, "verifyFullKeyBelongsToUser", { enumerable: true, get: function () { return helpers_1.verifyFullKeyBelongsToUser; } }); +Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return helpers_1.verifySignature; } }); +Object.defineProperty(exports, "serializeNep413", { enumerable: true, get: function () { return helpers_1.serializeNep413; } }); +var translate_1 = require("./lib/translate/translate"); +Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } }); +Object.defineProperty(exports, "allowOnlyLanguage", { enumerable: true, get: function () { return translate_1.allowOnlyLanguage; } }); +var testUtils_1 = require("./lib/testUtils"); +Object.defineProperty(exports, "mockWallet", { enumerable: true, get: function () { return testUtils_1.mockWallet; } }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/constants.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/constants.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/constants.js b/packages/modal-ui/dist/cjs/core/src/lib/constants.js new file mode 100644 index 000000000..50899a58d --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PENDING_SELECTED_WALLET_ID = exports.SELECTED_WALLET_ID = exports.PENDING_CONTRACT = exports.CONTRACT = exports.REMEMBER_RECENT_WALLETS_STATE = exports.REMEMBER_RECENT_WALLETS = exports.RECENTLY_SIGNED_IN_WALLETS = exports.PACKAGE_NAME = void 0; +exports.PACKAGE_NAME = "near-wallet-selector"; +exports.RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +exports.REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +exports.REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +exports.CONTRACT = "contract"; +exports.PENDING_CONTRACT = "contract:pending"; +exports.SELECTED_WALLET_ID = `selectedWalletId`; +exports.PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/detect-browser.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/detect-browser.js b/packages/modal-ui/dist/cjs/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..a03402ab2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,74 @@ +"use strict"; +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCurrentBrowserSupported = void 0; +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; +exports.isCurrentBrowserSupported = isCurrentBrowserSupported; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/getActiveAccount.js b/packages/modal-ui/dist/cjs/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..0da744cc5 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActiveAccount = void 0; +const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; +exports.getActiveAccount = getActiveAccount; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/index.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/index.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/index.js b/packages/modal-ui/dist/cjs/core/src/lib/helpers/index.js new file mode 100644 index 000000000..eb80ab43a --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./waitFor"), exports); +__exportStar(require("./getActiveAccount"), exports); +__exportStar(require("./detect-browser"), exports); +__exportStar(require("./verify-signature/verify-signature"), exports); +__exportStar(require("./verify-signature/payload"), exports); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/payload.js b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..5655fd8cd --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeNep413 = exports.payloadSchema = exports.createPayload = void 0; +const borsh_1 = require("borsh"); +const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +exports.createPayload = createPayload; +exports.payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +const serializeNep413 = (signMessageParams) => { + const payload = (0, exports.createPayload)(signMessageParams); + return Buffer.from((0, borsh_1.serialize)(exports.payloadSchema, payload)); +}; +exports.serializeNep413 = serializeNep413; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..5d00297d2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyFullKeyBelongsToUser = exports.verifySignature = void 0; +const borsh_1 = require("borsh"); +const js_sha256_1 = require("js-sha256"); +const payload_1 = require("./payload"); +const crypto_1 = require("../../../../../../../near-api-js/packages/crypto"); +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +const providers_1 = require("@near-js/providers"); +const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = (0, borsh_1.serialize)(payload_1.payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(js_sha256_1.sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = (0, crypto_1.publicKeyFrom)(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +exports.verifySignature = verifySignature; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new providers_1.JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; +exports.verifyFullKeyBelongsToUser = verifyFullKeyBelongsToUser; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/waitFor.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/helpers/waitFor.js b/packages/modal-ui/dist/cjs/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..8d37d4cef --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/helpers/waitFor.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitFor = void 0; +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; +exports.waitFor = waitFor; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/ar.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/bg.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/en.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/es.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/hi.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/hr.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/ko.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/mk.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/sl.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/sr.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/vi.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/locale/zh.json b/packages/modal-ui/dist/cjs/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/modal-ui/dist/cjs/core/src/lib/options.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/options.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/options.js b/packages/modal-ui/dist/cjs/core/src/lib/options.js new file mode 100644 index 000000000..587fab7eb --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/options.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveOptions = exports.resolveNetwork = exports.getNetworkPreset = void 0; +const services_1 = require("./services"); +const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +exports.getNetworkPreset = getNetworkPreset; +const resolveNetwork = (network) => { + return typeof network === "string" ? (0, exports.getNetworkPreset)(network) : network; +}; +exports.resolveNetwork = resolveNetwork; +const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: (0, exports.resolveNetwork)(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new services_1.WebStorageService(), + }; +}; +exports.resolveOptions = resolveOptions; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/options.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/options.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/options.types.js b/packages/modal-ui/dist/cjs/core/src/lib/options.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/options.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..1129f4fc6 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventEmitter = void 0; +const events_1 = require("events"); +class EventEmitter { + emitter = new events_1.EventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} +exports.EventEmitter = EventEmitter; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/index.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/index.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/index.js b/packages/modal-ui/dist/cjs/core/src/lib/services/index.js new file mode 100644 index 000000000..771f7ca4c --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./provider/provider.service"), exports); +__exportStar(require("./provider/provider.service.types"), exports); +__exportStar(require("./storage/storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service"), exports); +__exportStar(require("./storage/web-storage.service"), exports); +__exportStar(require("./logger/logger.service"), exports); +__exportStar(require("./logger/logger.service.types"), exports); +__exportStar(require("./wallet-modules/wallet-modules.service"), exports); +__exportStar(require("./event-emitter/event-emitter.service"), exports); +__exportStar(require("./event-emitter/event-emitter.types"), exports); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.js b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..f2365f6b4 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = exports.Logger = void 0; +class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +exports.Logger = Logger; +exports.logger = new Logger(); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.types.js b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.js b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..7798a5f3f --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Provider = void 0; +const providers_1 = require("@near-js/providers"); +class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new providers_1.FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new providers_1.JsonRpcProvider({ url })) + : []; + } +} +exports.Provider = Provider; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.types.js b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.js b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..1d1ed0bf1 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonStorage = void 0; +const KEY_DELIMITER = ":"; +class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} +exports.JsonStorage = JsonStorage; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/storage.service.types.js b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/storage/web-storage.service.js b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..b1b3430c7 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebStorageService = void 0; +class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} +exports.WebStorageService = WebStorageService; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..a27acfb1e --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,325 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletModules = void 0; +const event_emitter_service_1 = require("../event-emitter/event-emitter.service"); +const logger_service_1 = require("../logger/logger.service"); +const constants_1 = require("../../constants"); +const json_storage_service_1 = require("../storage/json-storage.service"); +class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger_service_1.logger.log(`Failed to validate ${wallet.id} during setup`); + logger_service_1.logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(constants_1.PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(constants_1.PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(constants_1.PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(constants_1.PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger_service_1.logger.log("Failed to sign out existing wallet"); + logger_service_1.logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(constants_1.RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger_service_1.logger.log(`Failed to sign out ${wallet.id}`); + logger_service_1.logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(constants_1.PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(constants_1.PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new event_emitter_service_1.EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new logger_service_1.Logger(module.id), + storage: new json_storage_service_1.JsonStorage(this.storage, [constants_1.PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger_service_1.logger.log("Failed to setup module"); + logger_service_1.logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger_service_1.logger.error("Failed to sign in to wallet. " + err); + } + } + } +} +exports.WalletModules = WalletModules; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/store.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/store.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/store.js b/packages/modal-ui/dist/cjs/core/src/lib/store.js new file mode 100644 index 000000000..fc078e464 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/store.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStore = void 0; +const rxjs_1 = require("rxjs"); +const services_1 = require("./services"); +const constants_1 = require("./constants"); +const reducer = (state, action) => { + services_1.logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? constants_1.REMEMBER_RECENT_WALLETS_STATE.DISABLED + : constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +const createStore = async (storage) => { + const jsonStorage = new services_1.JsonStorage(storage, constants_1.PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(constants_1.CONTRACT), + selectedWalletId: await jsonStorage.getItem(constants_1.SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new rxjs_1.BehaviorSubject(initialState); + const actions$ = new rxjs_1.Subject(); + actions$.pipe((0, rxjs_1.scan)(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, constants_1.SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, constants_1.CONTRACT, "contract"); + syncStorage(prevState, state, constants_1.RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, constants_1.REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; +exports.createStore = createStore; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/store.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/store.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/store.types.js b/packages/modal-ui/dist/cjs/core/src/lib/store.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/store.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/testUtils.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/testUtils.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/testUtils.js b/packages/modal-ui/dist/cjs/core/src/lib/testUtils.js new file mode 100644 index 000000000..5e0cc0df9 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/testUtils.js @@ -0,0 +1,107 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = void 0; +// Remove Jest import +// import * as jest from "jest"; +const jest_mock_extended_1 = require("jest-mock-extended"); +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +const mockWallet = async (factory, deps) => { + const { options, storage } = (0, options_1.resolveOptions)({ + network: (0, options_1.getNetworkPreset)("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const walletModules = new services_1.WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || (0, jest_mock_extended_1.mock)(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +exports.mockWallet = mockWallet; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/translate/translate.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/translate/translate.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/translate/translate.js b/packages/modal-ui/dist/cjs/core/src/lib/translate/translate.js new file mode 100644 index 000000000..c5573a87c --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/translate/translate.js @@ -0,0 +1,81 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.translate = exports.allowOnlyLanguage = void 0; +const en_json_1 = __importDefault(require("../locale/en.json")); +const es_json_1 = __importDefault(require("../locale/es.json")); +const zh_json_1 = __importDefault(require("../locale/zh.json")); +const bg_json_1 = __importDefault(require("../locale/bg.json")); +const ko_json_1 = __importDefault(require("../locale/ko.json")); +const vi_json_1 = __importDefault(require("../locale/vi.json")); +const hi_json_1 = __importDefault(require("../locale/hi.json")); +const ar_json_1 = __importDefault(require("../locale/ar.json")); +const hr_json_1 = __importDefault(require("../locale/hr.json")); +const mk_json_1 = __importDefault(require("../locale/mk.json")); +const sl_json_1 = __importDefault(require("../locale/sl.json")); +const sr_json_1 = __importDefault(require("../locale/sr.json")); +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en_json_1.default; + case "es": + return es_json_1.default; + case "zh": + return zh_json_1.default; + case "bg": + return bg_json_1.default; + case "ko": + return ko_json_1.default; + case "vi": + return vi_json_1.default; + case "hi": + return hi_json_1.default; + case "ar": + return ar_json_1.default; + case "hr": + return hr_json_1.default; + case "mk": + return mk_json_1.default; + case "sl": + return sl_json_1.default; + case "sr": + return sr_json_1.default; + default: + return en_json_1.default; + } +}; +let chosenLang; +const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +exports.allowOnlyLanguage = allowOnlyLanguage; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; +exports.translate = translate; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/utils.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/utils.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/utils.types.js b/packages/modal-ui/dist/cjs/core/src/lib/utils.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/utils.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.js b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..8ffb4cc07 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletSelector = void 0; +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +const setupWalletSelector = async (params) => { + const { options, storage } = (0, options_1.resolveOptions)(params); + services_1.Logger.debug = options.debug; + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const network = await (0, options_1.getNetworkPreset)(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new services_1.WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new services_1.Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; +exports.setupWalletSelector = setupWalletSelector; diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.types.js b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet-selector.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet/index.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet/index.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet/index.js b/packages/modal-ui/dist/cjs/core/src/lib/wallet/index.js new file mode 100644 index 000000000..d7ee97f6b --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./wallet.types"), exports); +__exportStar(require("./transactions.types"), exports); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet/transactions.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet/transactions.types.js b/packages/modal-ui/dist/cjs/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet/transactions.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet/wallet.types.d.ts b/packages/modal-ui/dist/cjs/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map b/packages/modal-ui/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/core/src/lib/wallet/wallet.types.js b/packages/modal-ui/dist/cjs/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/core/src/lib/wallet/wallet.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/index.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/index.d.ts new file mode 100644 index 000000000..f30fecabf --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupModal } from "./lib/modal"; +export type { WalletSelectorModal, ModalOptions, Theme, ModalEvents, } from "./lib/modal.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/index.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/index.d.ts.map new file mode 100644 index 000000000..8a8c34d43 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,WAAW,GACZ,MAAM,mBAAmB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/index.js b/packages/modal-ui/dist/cjs/modal-ui/src/index.js new file mode 100644 index 000000000..18274ba33 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupModal = void 0; +var modal_1 = require("./lib/modal"); +Object.defineProperty(exports, "setupModal", { enumerable: true, get: function () { return modal_1.setupModal; } }); diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/AlertMessage.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/AlertMessage.d.ts new file mode 100644 index 000000000..bc972da8f --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/AlertMessage.d.ts @@ -0,0 +1,11 @@ +import React from "react"; +import type { ModuleState } from "@near-wallet-selector/core"; +interface AlertMessageProps { + message: string; + module?: ModuleState; + onBack: (retry: boolean) => void; + onCloseModal: () => void; +} +export declare const AlertMessage: React.FC; +export {}; +//# sourceMappingURL=AlertMessage.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/AlertMessage.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/AlertMessage.d.ts.map new file mode 100644 index 000000000..4ac62a547 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/AlertMessage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AlertMessage.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/AlertMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2BpD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/AlertMessage.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/AlertMessage.js new file mode 100644 index 000000000..57d08904d --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/AlertMessage.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AlertMessage = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = require("react"); +const ConnectionResult_1 = require("./ConnectionResult"); +const ModalHeader_1 = require("./ModalHeader"); +const AlertMessage = ({ message, module, onBack, onCloseModal, }) => { + return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: "", onCloseModal: onCloseModal }), (0, jsx_runtime_1.jsx)("div", { className: "alert-message connecting-wrapper connecting-wrapper-err", children: (0, jsx_runtime_1.jsxs)("div", { className: "content", children: [(0, jsx_runtime_1.jsx)("div", { className: "icon", children: (0, jsx_runtime_1.jsx)("img", { src: module?.metadata.iconUrl, alt: module?.metadata.name }) }), (0, jsx_runtime_1.jsx)("h3", { className: "connecting-name", children: module?.metadata.name }), (0, jsx_runtime_1.jsx)(ConnectionResult_1.ConnectionResult, { module: module, message: message, err: message !== null, onRetry: () => { + onBack(true); + } })] }) })] })); +}; +exports.AlertMessage = AlertMessage; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/BackArrow.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/BackArrow.d.ts new file mode 100644 index 000000000..a6fd6f022 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/BackArrow.d.ts @@ -0,0 +1,7 @@ +import React from "react"; +interface BackArrowProps { + onClick: () => void; +} +export declare const BackArrow: React.FC; +export {}; +//# sourceMappingURL=BackArrow.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/BackArrow.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/BackArrow.d.ts.map new file mode 100644 index 000000000..c3cd0a168 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/BackArrow.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BackArrow.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/BackArrow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAM9C,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/BackArrow.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/BackArrow.js new file mode 100644 index 000000000..77d6bf1c7 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/BackArrow.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BackArrow = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const BackArrowIcon_1 = require("./icons/BackArrowIcon"); +const BackArrow = ({ onClick }) => { + return ((0, jsx_runtime_1.jsx)("button", { onClick: onClick, className: "back-button", children: (0, jsx_runtime_1.jsx)(BackArrowIcon_1.BackArrowIcon, {}) })); +}; +exports.BackArrow = BackArrow; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/CloseButton.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/CloseButton.d.ts new file mode 100644 index 000000000..1b1ad978c --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/CloseButton.d.ts @@ -0,0 +1,7 @@ +import React from "react"; +interface CloseButtonProps { + onClick: () => void; +} +export declare const CloseButton: React.FC; +export {}; +//# sourceMappingURL=CloseButton.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/CloseButton.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/CloseButton.d.ts.map new file mode 100644 index 000000000..fe4c45e1b --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/CloseButton.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CloseButton.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/CloseButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAMlD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/CloseButton.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/CloseButton.js new file mode 100644 index 000000000..50490026a --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/CloseButton.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CloseButton = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const CloseIcon_1 = require("./icons/CloseIcon"); +const CloseButton = ({ onClick }) => { + return ((0, jsx_runtime_1.jsx)("button", { onClick: onClick, className: "close-button", children: (0, jsx_runtime_1.jsx)(CloseIcon_1.CloseIcon, {}) })); +}; +exports.CloseButton = CloseButton; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ConnectionResult.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ConnectionResult.d.ts new file mode 100644 index 000000000..1a688d8fe --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ConnectionResult.d.ts @@ -0,0 +1,11 @@ +import React from "react"; +import type { ModuleState } from "@near-wallet-selector/core"; +interface ConnectionResultProps { + module: ModuleState; + message: string; + err: boolean; + onRetry: () => void; +} +export declare const ConnectionResult: React.FC; +export {}; +//# sourceMappingURL=ConnectionResult.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ConnectionResult.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ConnectionResult.d.ts.map new file mode 100644 index 000000000..deb52314e --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ConnectionResult.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionResult.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ConnectionResult.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAK9D,UAAU,qBAAqB;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA2B5D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ConnectionResult.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ConnectionResult.js new file mode 100644 index 000000000..412d5dd6a --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ConnectionResult.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConnectionResult = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const core_1 = require("@near-wallet-selector/core"); +const ConnectionErrorIcon_1 = require("./icons/ConnectionErrorIcon"); +const ConnectionSuccessIcon_1 = require("./icons/ConnectionSuccessIcon"); +const ConnectionResult = ({ module, message, err, onRetry, }) => { + return ((0, jsx_runtime_1.jsx)("div", { className: "connection connecting-details", children: err ? ((0, jsx_runtime_1.jsxs)("div", { className: "error-wrapper", children: [(0, jsx_runtime_1.jsxs)("div", { className: "error", children: [(0, jsx_runtime_1.jsx)(ConnectionErrorIcon_1.ConnectionErrorIcon, {}), (0, core_1.translate)("modal.wallet.connectionFailed")] }), (0, jsx_runtime_1.jsx)("p", { children: message }), module?.metadata.available && ((0, jsx_runtime_1.jsx)("button", { onClick: onRetry, children: (0, core_1.translate)("modal.ledger.retry") }))] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "success", children: [(0, jsx_runtime_1.jsx)(ConnectionSuccessIcon_1.ConnectionSuccessIcon, {}), (0, core_1.translate)("modal.wallet.connectionSuccessful")] })) })); +}; +exports.ConnectionResult = ConnectionResult; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/DerivationPath.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/DerivationPath.d.ts new file mode 100644 index 000000000..89f5be668 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/DerivationPath.d.ts @@ -0,0 +1,20 @@ +import React from "react"; +import type { HardwareWalletAccount, Wallet, WalletSelector } from "@near-wallet-selector/core"; +import type { ModalOptions } from "../modal.types"; +import type { DerivationPathModalRouteParams } from "./Modal.types"; +interface DerivationPathProps { + selector: WalletSelector; + options: ModalOptions; + onBack: () => void; + onConnected: () => void; + params: DerivationPathModalRouteParams; + onError: (message: string, wallet: Wallet) => void; + onCloseModal: () => void; +} +export type HardwareWalletAccountState = HardwareWalletAccount & { + selected: boolean; +}; +export type HardwareRoutes = "EnterDerivationPath" | "SpecifyHDPath" | "NoAccountsFound" | "ChooseAccount" | "AddCustomAccountId" | "OverviewAccounts"; +export declare const DerivationPath: React.FC; +export {}; +//# sourceMappingURL=DerivationPath.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/DerivationPath.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/DerivationPath.d.ts.map new file mode 100644 index 000000000..94da5efbd --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/DerivationPath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DerivationPath.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/DerivationPath.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAEV,qBAAqB,EACrB,MAAM,EACN,cAAc,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAUpE,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,EAAE,8BAA8B,CAAC;IACvC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC/D,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,oBAAoB,GACpB,kBAAkB,CAAC;AAIvB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAgZxD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/DerivationPath.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/DerivationPath.js new file mode 100644 index 000000000..1acda1a9f --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/DerivationPath.js @@ -0,0 +1,210 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DerivationPath = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = require("react"); +const HardwareWalletAccountsForm_1 = __importDefault(require("./HardwareWalletAccountsForm")); +const WalletConnecting_1 = require("./WalletConnecting"); +const ModalHeader_1 = require("./ModalHeader"); +const BackArrow_1 = require("./BackArrow"); +const LedgerDeviceIcon_1 = require("./icons/LedgerDeviceIcon"); +const core_1 = require("@near-wallet-selector/core"); +const UpArrowIcon_1 = require("./icons/UpArrowIcon"); +const DownArrowIcon_1 = require("./icons/DownArrowIcon"); +const DEFAULT_DERIVATION_PATH = "44'/397'/0'/0'/1'"; +const DerivationPath = ({ selector, options, onBack, onConnected, params, onError, onCloseModal, }) => { + const [route, setRoute] = (0, react_1.useState)("EnterDerivationPath"); + const [derivationPath, setDerivationPath] = (0, react_1.useState)(DEFAULT_DERIVATION_PATH); + const [customDerivationPath, setCustomDerivationPath] = (0, react_1.useState)(1); + const [accounts, setAccounts] = (0, react_1.useState)([]); + const [selectedAccounts, setSelectedAccounts] = (0, react_1.useState)([]); + const [hardwareWallet, setHardwareWallet] = (0, react_1.useState)(); + const [customAccountId, setCustomAccountId] = (0, react_1.useState)(""); + const [connecting, setConnecting] = (0, react_1.useState)(false); + const initalHeaderTitle = (0, core_1.translate)("modal.ledger.connectWithLedger"); + const [headerTitle, setHeaderTitle] = (0, react_1.useState)(initalHeaderTitle); + const getAccountIds = async (publicKey) => { + const response = await fetch(`${selector.options.network.indexerUrl}/publicKey/ed25519:${publicKey}/accounts`); + if (!response.ok) { + throw new Error("Failed to get account id from public key"); + } + const accountIds = await response.json(); + if (!Array.isArray(accountIds) || !accountIds.length) { + return []; + } + return accountIds; + }; + const resolveAccounts = async (wallet) => { + const publicKey = await wallet.getPublicKey(derivationPath); + try { + const accountIds = await getAccountIds(publicKey); + return accountIds.map((accountId, index) => { + return { + derivationPath, + publicKey, + accountId, + selected: index === 0, + }; + }); + } + catch (e) { + return null; + } + }; + const handleValidateAccount = async () => { + const wallet = await selector.wallet(params.walletId); + if (wallet.type !== "hardware") { + return; + } + setConnecting(true); + setHardwareWallet(wallet); + try { + const resolvedAccounts = await resolveAccounts(wallet); + if (!resolvedAccounts) { + setRoute("AddCustomAccountId"); + return; + } + const noAccounts = resolvedAccounts.length === 0; + const multipleAccounts = resolvedAccounts.length > 1; + if (noAccounts) { + setHeaderTitle((0, core_1.translate)("modal.ledger.noAccountsFound")); + setRoute("NoAccountsFound"); + return; + } + setAccounts(resolvedAccounts); + if (!multipleAccounts) { + setSelectedAccounts(resolvedAccounts); + setRoute("OverviewAccounts"); + } + else { + setHeaderTitle((0, core_1.translate)("modal.ledger.selectYourAccounts")); + setRoute("ChooseAccount"); + } + } + catch (err) { + setConnecting(false); + const message = err && typeof err === "object" && "message" in err + ? err.message + : "Something went wrong"; + onError(message, wallet); + } + finally { + setConnecting(false); + } + }; + const handleAddCustomAccountId = async () => { + try { + setConnecting(true); + const publicKey = await hardwareWallet.getPublicKey(derivationPath); + const accountList = [ + { + derivationPath: derivationPath, + publicKey, + accountId: customAccountId, + selected: true, + }, + ]; + setAccounts(accountList); + setSelectedAccounts(accountList); + setHeaderTitle((0, core_1.translate)("modal.ledger.connecting1Account")); + setRoute("OverviewAccounts"); + } + catch (err) { + setConnecting(false); + const message = err && typeof err === "object" && "message" in err + ? err.message + : "Something went wrong"; + onError(message, hardwareWallet); + } + finally { + setConnecting(false); + } + }; + const handleSignIn = () => { + const mapAccounts = selectedAccounts.map((account) => { + return { + derivationPath: account.derivationPath, + publicKey: account.publicKey, + accountId: account.accountId, + }; + }); + return hardwareWallet + .signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + accounts: mapAccounts, + }) + .then(() => onConnected()) + .catch((err) => { + onError(`Error: ${err.message}`, hardwareWallet); + }); + }; + const handleOnBackButtonClick = () => { + if (route === "SpecifyHDPath" || + route === "NoAccountsFound" || + route === "ChooseAccount") { + setHeaderTitle((0, core_1.translate)("modal.ledger.connectWithLedger")); + setRoute("EnterDerivationPath"); + } + if (route === "OverviewAccounts") { + setHeaderTitle((0, core_1.translate)("modal.ledger.selectYourAccounts")); + setRoute("ChooseAccount"); + } + }; + if (connecting) { + return ((0, jsx_runtime_1.jsx)("div", { className: "derivation-path-wrapper", children: (0, jsx_runtime_1.jsx)(WalletConnecting_1.WalletConnecting, { wallet: hardwareWallet, onBack: () => { + setConnecting(false); + }, onCloseModal: onCloseModal }) })); + } + return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "nws-modal-header-wrapper", children: [(route === "SpecifyHDPath" || + route === "NoAccountsFound" || + route === "ChooseAccount" || + route === "OverviewAccounts") && ((0, jsx_runtime_1.jsx)(BackArrow_1.BackArrow, { onClick: handleOnBackButtonClick })), (0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: headerTitle, onCloseModal: onCloseModal })] }), (0, jsx_runtime_1.jsxs)("div", { className: "derivation-path-wrapper", children: [route === "EnterDerivationPath" && ((0, jsx_runtime_1.jsxs)("div", { className: "enter-derivation-path", children: [(0, jsx_runtime_1.jsx)("div", { className: "ledger-image", children: (0, jsx_runtime_1.jsx)(LedgerDeviceIcon_1.LedgerDeviceIcon, {}) }), (0, jsx_runtime_1.jsxs)("div", { className: "ledger-description", children: [(0, jsx_runtime_1.jsx)("p", { children: (0, core_1.translate)("modal.ledger.makeSureYourLedger") }), (0, jsx_runtime_1.jsx)("p", { className: "specify-path", onClick: () => { + setHeaderTitle((0, core_1.translate)("modal.ledger.specifyHDPath")); + setRoute("SpecifyHDPath"); + }, children: (0, core_1.translate)("modal.ledger.specifyHDPath") })] }), (0, jsx_runtime_1.jsx)("div", { className: "action-buttons", children: (0, jsx_runtime_1.jsx)("button", { className: "middleButton", onClick: handleValidateAccount, children: (0, core_1.translate)("modal.ledger.continue") }) })] })), route === "SpecifyHDPath" && ((0, jsx_runtime_1.jsxs)("div", { className: "specify-path-wrapper", children: [(0, jsx_runtime_1.jsxs)("div", { className: "change-path-wrapper", children: [(0, jsx_runtime_1.jsx)("div", { className: "display-path", children: (0, jsx_runtime_1.jsx)("span", { children: derivationPath.slice(0, -2) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "change-path", children: [(0, jsx_runtime_1.jsx)("div", { className: "path-value", children: (0, jsx_runtime_1.jsx)("span", { children: customDerivationPath }) }), (0, jsx_runtime_1.jsxs)("div", { className: "buttons-wrapper", children: [(0, jsx_runtime_1.jsx)("button", { onClick: () => { + const newValue = customDerivationPath + 1; + const path = derivationPath.slice(0, -2); + setDerivationPath(`${path}${newValue}'`); + setCustomDerivationPath(newValue); + }, children: (0, jsx_runtime_1.jsx)(UpArrowIcon_1.UpArrowIcon, {}) }), (0, jsx_runtime_1.jsx)("button", { onClick: () => { + const newValue = customDerivationPath - 1; + if (newValue < 0) { + return; + } + const path = derivationPath.slice(0, -2); + setDerivationPath(`${path}${newValue}'`); + setCustomDerivationPath(newValue); + }, children: (0, jsx_runtime_1.jsx)(DownArrowIcon_1.DownArrowIcon, {}) })] })] })] }), (0, jsx_runtime_1.jsx)("p", { className: "path-description", children: (0, core_1.translate)("modal.ledger.enterYourPreferredHDPath") }), (0, jsx_runtime_1.jsx)("p", { className: "what-link", children: (0, jsx_runtime_1.jsx)("a", { href: "https://www.ledger.com/academy/crypto/what-are-hierarchical-deterministic-hd-wallets", target: "_blank", children: "What's this?" }) }), (0, jsx_runtime_1.jsx)("div", { className: "action-buttons", children: (0, jsx_runtime_1.jsx)("button", { className: "middleButton", onClick: handleValidateAccount, children: (0, core_1.translate)("modal.ledger.scan") }) })] })), route === "NoAccountsFound" && ((0, jsx_runtime_1.jsx)("div", { className: "no-accounts-found-wrapper", children: (0, jsx_runtime_1.jsxs)("p", { children: [(0, core_1.translate)("modal.ledger.cantFindAnyAccount"), " ", (0, jsx_runtime_1.jsx)("a", { href: `https://${selector.options.network.networkId === "testnet" + ? "testnet" + : "app"}.mynearwallet.com/create`, target: "_blank", children: "MyNearWallet" }), " ", (0, core_1.translate)("modal.ledger.orConnectAnAnotherLedger")] }) })), route === "ChooseAccount" && ((0, jsx_runtime_1.jsx)(HardwareWalletAccountsForm_1.default, { accounts: accounts, onSelectedChanged: (index, selected) => { + setAccounts((prevAccounts) => { + const updateAccounts = prevAccounts.map((account, idx) => { + const selectedValue = index === idx ? selected : account.selected; + return { + ...account, + selected: selectedValue, + }; + }); + return [...updateAccounts]; + }); + }, onSubmit: (acc, e) => { + e.preventDefault(); + const selectedAcc = acc.filter((account) => account.selected); + setSelectedAccounts(selectedAcc); + const numberOfAccounts = selectedAcc.length; + setHeaderTitle(`${(0, core_1.translate)("modal.ledger.connecting")} ${numberOfAccounts} ${(0, core_1.translate)("modal.ledger.ofAccounts")}`); + setRoute("OverviewAccounts"); + }, onChangeRoute: (newRoute) => { + if (newRoute === "SpecifyHDPath") { + setHeaderTitle((0, core_1.translate)("modal.ledger.specifyHDPath")); + } + setRoute(newRoute); + } })), route === "AddCustomAccountId" && ((0, jsx_runtime_1.jsxs)("div", { className: "enter-custom-account", children: [(0, jsx_runtime_1.jsx)("p", { children: (0, core_1.translate)("modal.ledger.failedToAutomatically") }), (0, jsx_runtime_1.jsx)("div", { className: "input-wrapper", children: (0, jsx_runtime_1.jsx)("input", { type: "text", placeholder: "Account ID", value: customAccountId, onChange: (e) => { + setCustomAccountId(e.target.value); + } }) }), (0, jsx_runtime_1.jsx)("div", { className: "action-buttons", children: (0, jsx_runtime_1.jsx)("button", { className: "middleButton", onClick: handleAddCustomAccountId, children: (0, core_1.translate)("ledger.Continue") }) })] })), route === "OverviewAccounts" && ((0, jsx_runtime_1.jsxs)("div", { className: "overview-wrapper", children: [(0, jsx_runtime_1.jsx)("p", { children: (0, core_1.translate)("modal.ledger.overviewTheListOfAuthorized") }), (0, jsx_runtime_1.jsx)("div", { className: "accounts", children: selectedAccounts.map((account, index) => ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", { className: "account", children: (0, jsx_runtime_1.jsx)("span", { children: account.accountId }) }) }, account.accountId))) }), (0, jsx_runtime_1.jsx)("div", { className: "action-buttons", children: (0, jsx_runtime_1.jsx)("button", { className: "middleButton", onClick: handleSignIn, disabled: accounts.length === 0, children: (0, core_1.translate)("modal.ledger.finish") }) })] }))] })] })); +}; +exports.DerivationPath = DerivationPath; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts new file mode 100644 index 000000000..514cc73c9 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts @@ -0,0 +1,11 @@ +import React from "react"; +import type { HardwareRoutes, HardwareWalletAccountState } from "./DerivationPath"; +interface FormProps { + accounts: Array; + onSelectedChanged: (index: number, selected: boolean) => void; + onSubmit: (accounts: Array, e: React.FormEvent) => void; + onChangeRoute: (route: HardwareRoutes) => void; +} +declare const HardwareWalletAccountsForm: React.FC; +export default HardwareWalletAccountsForm; +//# sourceMappingURL=HardwareWalletAccountsForm.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts.map new file mode 100644 index 000000000..97295f250 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HardwareWalletAccountsForm.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/HardwareWalletAccountsForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EACV,cAAc,EACd,0BAA0B,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,UAAU,SAAS;IACjB,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC5C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,QAAQ,EAAE,CACR,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,EAC3C,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KAChC,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAChD;AAED,QAAA,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA4DnD,CAAC;AAEF,eAAe,0BAA0B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/HardwareWalletAccountsForm.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/HardwareWalletAccountsForm.js new file mode 100644 index 000000000..7161e5bfb --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/HardwareWalletAccountsForm.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const jsx_runtime_1 = require("react/jsx-runtime"); +const HardwareWalletAccountsForm = ({ accounts, onSelectedChanged, onSubmit, onChangeRoute, }) => { + return ((0, jsx_runtime_1.jsxs)("div", { className: "choose-ledger-account-form-wrapper", children: [(0, jsx_runtime_1.jsxs)("p", { children: ["We found ", accounts.length, " accounts on your device. Select the account(s) you wish to connect."] }), (0, jsx_runtime_1.jsx)("div", { className: "button-wrapper", children: (0, jsx_runtime_1.jsx)("button", { onClick: () => { + onChangeRoute("SpecifyHDPath"); + }, children: "HD.../0" }) }), (0, jsx_runtime_1.jsx)("form", { className: "form", onSubmit: (e) => { + onSubmit(accounts, e); + }, children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "nws-form-control", children: accounts.map((account, index) => ((0, jsx_runtime_1.jsxs)("div", { className: "account", children: [(0, jsx_runtime_1.jsx)("input", { onChange: (e) => { + onSelectedChanged(index, e.target.checked); + }, checked: account.selected, type: "checkbox", id: account.accountId, name: account.accountId, value: account.accountId }), (0, jsx_runtime_1.jsxs)("label", { htmlFor: account.accountId, children: [" ", account.accountId] }), (0, jsx_runtime_1.jsx)("br", {})] }, index))) }), (0, jsx_runtime_1.jsx)("div", { className: "action-buttons", children: (0, jsx_runtime_1.jsx)("button", { className: "middleButton", type: "submit", disabled: !accounts.some((x) => x.selected), children: "Connect" }) })] }) })] })); +}; +exports.default = HardwareWalletAccountsForm; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/LanguageSelector.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/LanguageSelector.d.ts new file mode 100644 index 000000000..b305a6e2d --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/LanguageSelector.d.ts @@ -0,0 +1,7 @@ +import React from "react"; +interface LanguageSelectorProps { + changeLanguage: (e: React.ChangeEvent) => void; +} +export declare const LanguageSelector: React.FC; +export {}; +//# sourceMappingURL=LanguageSelector.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/LanguageSelector.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/LanguageSelector.d.ts.map new file mode 100644 index 000000000..dec34fc3c --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/LanguageSelector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LanguageSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/LanguageSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,qBAAqB;IAC7B,cAAc,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAClE;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoB5D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/LanguageSelector.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/LanguageSelector.js new file mode 100644 index 000000000..e6c2b8359 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/LanguageSelector.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LanguageSelector = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const LanguageSelector = ({ changeLanguage, }) => { + return ((0, jsx_runtime_1.jsxs)("div", { style: { + background: "aliceblue", + position: "fixed", + top: 0, + }, onChange: changeLanguage, children: [(0, jsx_runtime_1.jsx)("input", { type: "radio", value: "en", name: "language", defaultChecked: true }), " English", (0, jsx_runtime_1.jsx)("input", { type: "radio", value: "es", name: "language" }), " Spanish", (0, jsx_runtime_1.jsx)("input", { type: "radio", value: "fr", name: "language" }), " French", (0, jsx_runtime_1.jsx)("input", { type: "radio", value: "de", name: "language" }), " German", (0, jsx_runtime_1.jsx)("input", { type: "radio", value: "bg", name: "language" }), " Bulgarian", (0, jsx_runtime_1.jsx)("input", { type: "radio", value: "ko", name: "language" }), " Korean"] })); +}; +exports.LanguageSelector = LanguageSelector; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.d.ts new file mode 100644 index 000000000..785aba83c --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.d.ts @@ -0,0 +1,13 @@ +import React from "react"; +import type { EventEmitterService, WalletSelector } from "@near-wallet-selector/core"; +import type { ModalEvents, ModalOptions } from "../modal.types"; +interface ModalProps { + selector: WalletSelector; + options: ModalOptions; + visible: boolean; + hide: () => void; + emitter: EventEmitterService; +} +export declare const Modal: React.FC; +export {}; +//# sourceMappingURL=Modal.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.d.ts.map new file mode 100644 index 000000000..758766717 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EACV,mBAAmB,EAEnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,WAAW,EAEX,YAAY,EAEb,MAAM,gBAAgB,CAAC;AAcxB,UAAU,UAAU;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC3C;AAaD,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAoXtC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.js new file mode 100644 index 000000000..2c1833efd --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.js @@ -0,0 +1,231 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Modal = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = require("react"); +const WalletNetworkChanged_1 = require("./WalletNetworkChanged"); +const WalletOptions_1 = require("./WalletOptions"); +const AlertMessage_1 = require("./AlertMessage"); +const DerivationPath_1 = require("./DerivationPath"); +const WalletConnecting_1 = require("./WalletConnecting"); +const WalletNotInstalled_1 = require("./WalletNotInstalled"); +const WalletHome_1 = require("./WalletHome"); +const WalletConnected_1 = require("./WalletConnected"); +const ScanQRCode_1 = require("./ScanQRCode"); +const core_1 = require("@near-wallet-selector/core"); +const getThemeClass = (theme) => { + switch (theme) { + case "dark": + return "dark-theme"; + case "light": + return "light-theme"; + default: + return ""; + } +}; +const Modal = ({ selector, options, visible, hide, emitter, }) => { + const [route, setRoute] = (0, react_1.useState)({ + name: "WalletHome", + }); + const [alertMessage, setAlertMessage] = (0, react_1.useState)(null); + const [selectedWallet, setSelectedWallet] = (0, react_1.useState)(); + const [bridgeWalletUri, setBridgeWalletUri] = (0, react_1.useState)(); + const { rememberRecentWallets } = selector.store.getState(); + const [isChecked, setIsChecked] = (0, react_1.useState)(rememberRecentWallets === "enabled"); + const handleSwitchChange = () => { + setIsChecked((prevIsChecked) => !prevIsChecked); + selector.setRememberRecentWallets(); + }; + (0, react_1.useEffect)(() => { + setRoute({ + name: "WalletHome", + }); + (0, core_1.allowOnlyLanguage)(selector.options.languageCode); + const { selectedWalletId, modules } = selector.store.getState(); + if (selectedWalletId) { + const module = modules.find((m) => m.id === selectedWalletId); + setSelectedWallet(module); + setRoute({ + name: "WalletConnected", + params: { + module, + }, + }); + } + setBridgeWalletUri(""); + // eslint-disable-next-line + }, [visible]); + (0, react_1.useEffect)(() => { + const subscription = selector.on("networkChanged", ({ networkId }) => { + // Switched back to the correct network. + if (networkId === selector.options.network.networkId) { + return handleDismissClick({}); + } + setRoute({ + name: "WalletNetworkChanged", + }); + }); + return () => subscription.remove(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const handleDismissClick = (0, react_1.useCallback)(({ hideReason }) => { + setAlertMessage(null); + setRoute({ + name: "WalletHome", + }); + if (hideReason === "user-triggered") { + emitter.emit("onHide", { hideReason }); + } + if (hideReason === "wallet-navigation") { + emitter.emit("onHide", { hideReason }); + } + hide(); + }, [hide, emitter]); + (0, react_1.useEffect)(() => { + const close = (e) => { + if (e.key === "Escape") { + handleDismissClick({ hideReason: "user-triggered" }); + } + }; + window.addEventListener("keydown", close); + return () => window.removeEventListener("keydown", close); + }, [handleDismissClick]); + const handleWalletClick = async (module, qrCodeModal) => { + setSelectedWallet(module); + const { selectedWalletId } = selector.store.getState(); + if (selectedWalletId === module.id) { + setRoute({ + name: "WalletConnected", + params: { + module, + }, + }); + return; + } + try { + const { deprecated, available } = module.metadata; + if (module.type === "injected" && !available) { + setRoute({ + name: "WalletNotInstalled", + params: { module: module }, + }); + return; + } + const wallet = await module.wallet(); + if (deprecated) { + setAlertMessage(`${module.metadata.name} is deprecated. Please select another wallet.`); + setRoute({ + name: "AlertMessage", + params: { + module: module, + }, + }); + return; + } + if (wallet.type === "hardware") { + setRoute({ + name: "DerivationPath", + params: { + walletId: wallet.id || "ledger", + }, + }); + return; + } + setRoute({ + name: "WalletConnecting", + params: { wallet: wallet }, + }); + if (wallet.type === "bridge") { + const subscription = selector.on("uriChanged", ({ uri }) => { + setBridgeWalletUri(uri); + setRoute({ + name: "ScanQRCode", + params: { + uri, + wallet, + }, + }); + }); + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + qrCodeModal, + }); + subscription.remove(); + handleDismissClick({ hideReason: "wallet-navigation" }); + return; + } + if (wallet.type === "browser") { + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + successUrl: wallet.metadata.successUrl, + failureUrl: wallet.metadata.failureUrl, + }); + handleDismissClick({ hideReason: "wallet-navigation" }); + return; + } + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + }); + handleDismissClick({ hideReason: "wallet-navigation" }); + } + catch (err) { + const { name } = module.metadata; + const message = err && typeof err === "object" && "message" in err + ? err.message + : "Something went wrong"; + setAlertMessage(`Failed to sign in with ${name}: ${message}`); + setRoute({ + name: "AlertMessage", + params: { + module: module, + }, + }); + } + }; + if (!visible) { + return null; + } + return ((0, jsx_runtime_1.jsxs)("div", { className: `nws-modal-wrapper ${getThemeClass(options?.theme)} ${visible ? "open" : ""}`, children: [(0, jsx_runtime_1.jsx)("div", { className: "nws-modal-overlay", onClick: () => { + handleDismissClick({ hideReason: "user-triggered" }); + } }), (0, jsx_runtime_1.jsxs)("div", { className: "nws-modal", children: [(0, jsx_runtime_1.jsxs)("div", { className: "modal-left", children: [(0, jsx_runtime_1.jsxs)("div", { className: "modal-left-title", children: [(0, jsx_runtime_1.jsx)("h2", { children: (0, core_1.translate)("modal.wallet.connectYourWallet") }), (0, jsx_runtime_1.jsx)("span", { className: "nws-remember-wallet", children: (0, core_1.translate)("modal.wallet.rememberWallet") }), (0, jsx_runtime_1.jsxs)("label", { className: "nws-switch", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: isChecked, onChange: handleSwitchChange }), (0, jsx_runtime_1.jsx)("span", { className: "nws-slider round" })] })] }), (0, jsx_runtime_1.jsx)(WalletOptions_1.WalletOptions, { handleWalletClick: (module) => { + handleWalletClick(module, false); + }, selector: selector })] }), (0, jsx_runtime_1.jsx)("div", { className: "modal-right", children: (0, jsx_runtime_1.jsxs)("div", { className: "nws-modal-body", children: [route.name === "AlertMessage" && alertMessage && ((0, jsx_runtime_1.jsx)(AlertMessage_1.AlertMessage, { message: alertMessage, module: route.params?.module, onBack: (retry) => { + if (retry) { + handleWalletClick(selectedWallet, false); + } + setAlertMessage(null); + setRoute({ + name: "WalletHome", + }); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "DerivationPath" && ((0, jsx_runtime_1.jsx)(DerivationPath_1.DerivationPath, { selector: selector, options: options, onConnected: () => { + handleDismissClick({ hideReason: "wallet-navigation" }); + }, params: route.params, onBack: () => setRoute({ + name: "WalletHome", + }), onError: (message, wallet) => { + const { modules } = selector.store.getState(); + const findModule = modules.find((module) => module.id === wallet.id); + setAlertMessage(message); + setRoute({ + name: "AlertMessage", + params: { + module: findModule, + }, + }); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletNetworkChanged" && ((0, jsx_runtime_1.jsx)(WalletNetworkChanged_1.WalletNetworkChanged, { selector: selector, onBack: () => setRoute({ + name: "WalletHome", + }), onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletNotInstalled" && ((0, jsx_runtime_1.jsx)(WalletNotInstalled_1.WalletNotInstalled, { module: route.params?.module, onBack: () => { + setRoute({ + name: "WalletHome", + }); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletConnecting" && ((0, jsx_runtime_1.jsx)(WalletConnecting_1.WalletConnecting, { wallet: route.params?.wallet, onBack: () => { + setRoute({ + name: "WalletHome", + }); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletHome" && ((0, jsx_runtime_1.jsx)(WalletHome_1.WalletHome, { selector: selector, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletConnected" && ((0, jsx_runtime_1.jsx)(WalletConnected_1.WalletConnected, { module: selectedWallet, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "ScanQRCode" && ((0, jsx_runtime_1.jsx)(ScanQRCode_1.ScanQRCode, { handleOpenDefaultModal: () => { + handleWalletClick(selectedWallet, true); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }), uri: bridgeWalletUri, wallet: selectedWallet }))] }) })] })] })); +}; +exports.Modal = Modal; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.types.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.types.d.ts new file mode 100644 index 000000000..4f783cd07 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.types.d.ts @@ -0,0 +1,65 @@ +import type { Wallet } from "@near-wallet-selector/core"; +import type { ModuleState } from "@near-wallet-selector/core"; +type AlertMessageModalRouteParams = { + module: ModuleState; +}; +type WalletOptionsModalRouteParams = { + wallet: Wallet; +}; +export type DerivationPathModalRouteParams = { + walletId: string; +}; +type WalletNotInstalledModalRouteParams = { + module: ModuleState; +}; +type WalletNetworkChangedModalRouteParams = { + wallet: Wallet; +}; +type WalletConnectingModalRouteParams = { + wallet: Wallet; +}; +type WalletConnectedParams = { + module: ModuleState | undefined; +}; +type ScanQRCodeParams = { + wallet: Wallet; + uri: string | undefined; +}; +type AlertMessageModalRoute = { + name: "AlertMessage"; + params?: AlertMessageModalRouteParams; +}; +type WalletOptionsModalRoute = { + name: "WalletOptions"; + params?: WalletOptionsModalRouteParams; +}; +type DerivationPathModalRoute = { + name: "DerivationPath"; + params: DerivationPathModalRouteParams; +}; +type WalletNotInstalledModalRoute = { + name: "WalletNotInstalled"; + params?: WalletNotInstalledModalRouteParams; +}; +type WalletNetworkChangedModalRoute = { + name: "WalletNetworkChanged"; + params?: WalletNetworkChangedModalRouteParams; +}; +type WalletConnectingModalRoute = { + name: "WalletConnecting"; + params?: WalletConnectingModalRouteParams; +}; +type WalletHome = { + name: "WalletHome"; +}; +type WalletConnected = { + name: "WalletConnected"; + params?: WalletConnectedParams; +}; +type ScanQRCode = { + name: "ScanQRCode"; + params?: ScanQRCodeParams; +}; +export type ModalRoute = AlertMessageModalRoute | WalletOptionsModalRoute | DerivationPathModalRoute | WalletNotInstalledModalRoute | WalletNetworkChangedModalRoute | WalletConnectingModalRoute | WalletHome | WalletConnected | ScanQRCode; +export {}; +//# sourceMappingURL=Modal.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.types.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.types.d.ts.map new file mode 100644 index 000000000..a81b996c3 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Modal.types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/Modal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,KAAK,4BAA4B,GAAG;IAClC,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,KAAK,oCAAoC,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,4BAA4B,CAAC;CACvC,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,CAAC,EAAE,6BAA6B,CAAC;CACxC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,8BAA8B,CAAC;CACxC,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,CAAC,EAAE,kCAAkC,CAAC;CAC7C,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,CAAC,EAAE,oCAAoC,CAAC;CAC/C,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,CAAC,EAAE,gCAAgC,CAAC;CAC3C,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,sBAAsB,GACtB,uBAAuB,GACvB,wBAAwB,GACxB,4BAA4B,GAC5B,8BAA8B,GAC9B,0BAA0B,GAC1B,UAAU,GACV,eAAe,GACf,UAAU,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.types.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/Modal.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ModalHeader.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ModalHeader.d.ts new file mode 100644 index 000000000..74e7c6d2e --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ModalHeader.d.ts @@ -0,0 +1,8 @@ +import React from "react"; +interface ModalHeaderProps { + title: string; + onCloseModal: () => void; +} +export declare const ModalHeader: React.FC; +export {}; +//# sourceMappingURL=ModalHeader.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ModalHeader.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ModalHeader.d.ts.map new file mode 100644 index 000000000..8eab4a2a1 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ModalHeader.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ModalHeader.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ModalHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAWlD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ModalHeader.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ModalHeader.js new file mode 100644 index 000000000..7a6159268 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ModalHeader.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ModalHeader = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const CloseButton_1 = require("./CloseButton"); +const ModalHeader = ({ title, onCloseModal, }) => { + const additionalClasses = title === "Get a Wallet" ? " -open" : ""; + return ((0, jsx_runtime_1.jsxs)("div", { className: "nws-modal-header", children: [(0, jsx_runtime_1.jsx)("h3", { className: `middleTitle ${additionalClasses}`, children: title }), (0, jsx_runtime_1.jsx)(CloseButton_1.CloseButton, { onClick: onCloseModal })] })); +}; +exports.ModalHeader = ModalHeader; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ScanQRCode.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ScanQRCode.d.ts new file mode 100644 index 000000000..78e2cf0f0 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ScanQRCode.d.ts @@ -0,0 +1,11 @@ +import React from "react"; +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +interface ScanQRCodeProps { + wallet: ModuleState; + uri?: string; + onCloseModal: () => void; + handleOpenDefaultModal?: () => void; +} +export declare const ScanQRCode: React.FC; +export {}; +//# sourceMappingURL=ScanQRCode.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ScanQRCode.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ScanQRCode.d.ts.map new file mode 100644 index 000000000..c28aa43a4 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ScanQRCode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ScanQRCode.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ScanQRCode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEtE,UAAU,eAAe;IACvB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACrC;AAMD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA2DhD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ScanQRCode.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ScanQRCode.js new file mode 100644 index 000000000..14c115de4 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/ScanQRCode.js @@ -0,0 +1,43 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ScanQRCode = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = __importDefault(require("react")); +const qrcode_1 = __importDefault(require("qrcode")); +const copy_to_clipboard_1 = __importDefault(require("copy-to-clipboard")); +const ModalHeader_1 = require("./ModalHeader"); +const CopyIcon_1 = require("./icons/CopyIcon"); +const core_1 = require("@near-wallet-selector/core"); +async function formatQRCodeImage(data) { + return await qrcode_1.default.toString(data, { margin: 0, type: "svg" }); +} +const ScanQRCode = ({ wallet, uri, onCloseModal, handleOpenDefaultModal, }) => { + const [notification, setNotification] = react_1.default.useState(""); + const [svg, setSvg] = react_1.default.useState(""); + const copyToClipboard = () => { + if (!uri) { + return; + } + const success = (0, copy_to_clipboard_1.default)(uri); + if (success) { + setNotification((0, core_1.translate)("modal.qr.copiedToClipboard")); + setTimeout(() => setNotification(""), 1200); + } + else { + setNotification((0, core_1.translate)("modal.qr.failedToCopy")); + setTimeout(() => setNotification(""), 1200); + } + }; + react_1.default.useEffect(() => { + (async () => { + if (uri) { + setSvg(await formatQRCodeImage(uri)); + } + })(); + }, [uri]); + return ((0, jsx_runtime_1.jsxs)("section", { className: "scan-qr-code", children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: (0, core_1.translate)("modal.qr.scanWithYourMobile"), onCloseModal: onCloseModal }), (0, jsx_runtime_1.jsxs)("section", { className: "qr-code", children: [(0, jsx_runtime_1.jsx)("div", { dangerouslySetInnerHTML: { __html: svg } }), notification ? ((0, jsx_runtime_1.jsx)("div", { className: "notification", children: notification })) : ((0, jsx_runtime_1.jsxs)("div", { className: "copy-btn", onClick: copyToClipboard, children: [(0, jsx_runtime_1.jsx)(CopyIcon_1.CopyIcon, {}), (0, core_1.translate)("modal.qr.copyToClipboard")] }))] }), (0, jsx_runtime_1.jsxs)("footer", { className: "footer", children: [(0, jsx_runtime_1.jsxs)("p", { children: [(0, core_1.translate)("modal.qr.preferTheOfficial"), " ", wallet.metadata.name, "?"] }), (0, jsx_runtime_1.jsx)("button", { className: "btn", onClick: handleOpenDefaultModal, children: (0, core_1.translate)("modal.qr.open") })] })] })); +}; +exports.ScanQRCode = ScanQRCode; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnected.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnected.d.ts new file mode 100644 index 000000000..377beacc1 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnected.d.ts @@ -0,0 +1,9 @@ +import React from "react"; +import type { ModuleState } from "@near-wallet-selector/core"; +interface WalletConnectedProps { + module: ModuleState; + onCloseModal: () => void; +} +export declare const WalletConnected: React.FC; +export {}; +//# sourceMappingURL=WalletConnected.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnected.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnected.d.ts.map new file mode 100644 index 000000000..318beb3ce --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnected.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletConnected.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletConnected.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAK9D,UAAU,oBAAoB;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAyB1D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnected.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnected.js new file mode 100644 index 000000000..a135e0e46 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnected.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletConnected = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = require("react"); +const CloseButton_1 = require("./CloseButton"); +const core_1 = require("@near-wallet-selector/core"); +const ConnectionSuccessIcon_1 = require("./icons/ConnectionSuccessIcon"); +const WalletConnected = ({ module, onCloseModal, }) => { + return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "nws-modal-header", children: [(0, jsx_runtime_1.jsx)("h3", { className: "middleTitle", children: `` }), (0, jsx_runtime_1.jsx)(CloseButton_1.CloseButton, { onClick: onCloseModal })] }), (0, jsx_runtime_1.jsx)("div", { className: "connecting-wrapper", children: (0, jsx_runtime_1.jsxs)("div", { className: "content", children: [(0, jsx_runtime_1.jsxs)("div", { className: "icon", children: [(0, jsx_runtime_1.jsx)("div", { className: "green-dot" }), (0, jsx_runtime_1.jsx)("img", { src: module?.metadata.iconUrl, alt: module?.metadata.name })] }), (0, jsx_runtime_1.jsx)("h3", { className: "connecting-name", children: module?.metadata.name }), (0, jsx_runtime_1.jsxs)("div", { className: "wallet-connected-success", children: [(0, jsx_runtime_1.jsx)(ConnectionSuccessIcon_1.ConnectionSuccessIcon, {}), (0, jsx_runtime_1.jsx)("span", { children: (0, core_1.translate)("modal.wallet.connectionSuccessful") })] })] }) })] })); +}; +exports.WalletConnected = WalletConnected; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnecting.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnecting.d.ts new file mode 100644 index 000000000..769887bad --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnecting.d.ts @@ -0,0 +1,10 @@ +import React from "react"; +import type { Wallet } from "@near-wallet-selector/core"; +interface WalletConnectingProps { + wallet: Wallet | undefined; + onBack: () => void; + onCloseModal: () => void; +} +export declare const WalletConnecting: React.FC; +export {}; +//# sourceMappingURL=WalletConnecting.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnecting.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnecting.d.ts.map new file mode 100644 index 000000000..316eabd23 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnecting.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletConnecting.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletConnecting.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMzD,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+B5D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnecting.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnecting.js new file mode 100644 index 000000000..f4fb4e4f3 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletConnecting.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletConnecting = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = require("react"); +// import LoadingIcon from "../images/connecting-loader.png"; +const loadingIcon = require("../images/connecting-loader.png"); +const ModalHeader_1 = require("./ModalHeader"); +const core_1 = require("@near-wallet-selector/core"); +const WalletConnecting = ({ wallet, onCloseModal, }) => { + return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: "", onCloseModal: onCloseModal }), (0, jsx_runtime_1.jsx)("div", { className: "connecting-wrapper", children: (0, jsx_runtime_1.jsxs)("div", { className: "content", children: [(0, jsx_runtime_1.jsx)("div", { className: "icon", children: (0, jsx_runtime_1.jsx)("img", { src: wallet?.metadata.iconUrl, alt: wallet?.metadata.name }) }), (0, jsx_runtime_1.jsx)("h3", { className: "connecting-name", children: wallet?.metadata.name }), (0, jsx_runtime_1.jsxs)("div", { className: "connecting-details", children: [(0, jsx_runtime_1.jsx)("div", { className: "spinner", children: (0, jsx_runtime_1.jsx)("img", { src: loadingIcon, alt: "loading-icon" }) }), (0, jsx_runtime_1.jsxs)("span", { children: [(0, core_1.translate)("modal.wallet.connectingTo"), " ", wallet?.metadata.name, "..."] })] }), (0, jsx_runtime_1.jsx)("div", { className: "connecting-message", children: (0, jsx_runtime_1.jsx)("span", { children: (0, core_1.translate)(`modal.wallet.connectingMessage.${wallet?.type}`) }) })] }) })] })); +}; +exports.WalletConnecting = WalletConnecting; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletHome.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletHome.d.ts new file mode 100644 index 000000000..51af4c7c7 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletHome.d.ts @@ -0,0 +1,9 @@ +import React from "react"; +import type { WalletSelector } from "@near-wallet-selector/core"; +interface WalletHomeProps { + selector: WalletSelector; + onCloseModal: () => void; +} +export declare const WalletHome: React.FC; +export {}; +//# sourceMappingURL=WalletHome.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletHome.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletHome.d.ts.map new file mode 100644 index 000000000..f2d8b2936 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletHome.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletHome.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletHome.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,4BAA4B,CAAC;AASpC,UAAU,eAAe;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAID,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqJhD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletHome.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletHome.js new file mode 100644 index 000000000..55af75771 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletHome.js @@ -0,0 +1,59 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletHome = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = require("react"); +const ModalHeader_1 = require("./ModalHeader"); +const BackArrow_1 = require("./BackArrow"); +const core_1 = require("@near-wallet-selector/core"); +const QRIcon_1 = require("./icons/QRIcon"); +const LinkIcon_1 = require("./icons/LinkIcon"); +const KeyIcon_1 = require("./icons/KeyIcon"); +const FolderIcon_1 = require("./icons/FolderIcon"); +const WalletHome = ({ selector, onCloseModal, }) => { + const [modules, setModules] = (0, react_1.useState)([]); + const [route, setRoute] = (0, react_1.useState)("WalletInfo"); + (0, react_1.useEffect)(() => { + const subscription = selector.store.observable.subscribe((state) => { + const filterByType = (item) => { + return (item.type !== "bridge" && + item.type !== "hardware" && + item.type !== "instant-link"); + }; + const filteredModules = state.modules.filter(filterByType); + setModules(filteredModules); + }); + return () => subscription.unsubscribe(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const getWalletUrl = (module) => { + let url = ""; + if (module.type === "injected") { + url = module.metadata.downloadUrl; + } + if (module.type === "browser") { + url = module.metadata.walletUrl; + } + return url; + }; + return ((0, jsx_runtime_1.jsxs)("div", { className: "wallet-home-wrapper", children: [(0, jsx_runtime_1.jsxs)("div", { className: "nws-modal-header-wrapper", children: [route === "GetWallets" && ((0, jsx_runtime_1.jsx)(BackArrow_1.BackArrow, { onClick: () => { + setRoute("WalletInfo"); + } })), (0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: route === "GetWallets" + ? (0, core_1.translate)("modal.wallet.getAWallet") + : (0, core_1.translate)("modal.wallet.whatIsAWallet"), onCloseModal: onCloseModal })] }), route === "GetWallets" && ((0, jsx_runtime_1.jsx)("div", { className: "get-wallet-wrapper", children: modules.map((module) => { + const { iconUrl, name } = module.metadata; + const qrIcon = ["nearfi", "here-wallet"].includes(module.id); + const hereWalletType = module.id === "here-wallet" ? "mobile" : ""; + const walletUrl = getWalletUrl(module); + return ((0, jsx_runtime_1.jsxs)("div", { tabIndex: 0, className: `single-wallet-get ${module.id}`, onClick: () => { + if (walletUrl) { + window.open(walletUrl, "_blank"); + } + }, children: [(0, jsx_runtime_1.jsxs)("div", { className: "small-icon", children: [qrIcon && walletUrl && (0, jsx_runtime_1.jsx)(QRIcon_1.QRIcon, {}), !qrIcon && walletUrl && (0, jsx_runtime_1.jsx)(LinkIcon_1.LinkIcon, {})] }), (0, jsx_runtime_1.jsx)("div", { className: "icon", children: (0, jsx_runtime_1.jsx)("img", { src: iconUrl, alt: name }) }), (0, jsx_runtime_1.jsxs)("div", { className: "content", children: [(0, jsx_runtime_1.jsx)("div", { className: "title", children: name }), (0, jsx_runtime_1.jsx)("div", { className: "type", children: (0, core_1.translate)(`modal.walletTypes.${hereWalletType || module.type}`) })] })] }, module.id)); + }) })), route === "WalletInfo" && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "wallet-info-wrapper what-wallet-hide", children: [(0, jsx_runtime_1.jsxs)("div", { className: "wallet-what", children: [(0, jsx_runtime_1.jsx)("div", { className: "icon-side", children: (0, jsx_runtime_1.jsx)(KeyIcon_1.KeyIcon, {}) }), (0, jsx_runtime_1.jsxs)("div", { className: "content-side", children: [(0, jsx_runtime_1.jsx)("h3", { children: (0, core_1.translate)("modal.wallet.secureAndManage") }), (0, jsx_runtime_1.jsx)("p", { children: (0, core_1.translate)("modal.wallet.safelyStore") })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "wallet-what", children: [(0, jsx_runtime_1.jsx)("div", { className: "icon-side", children: (0, jsx_runtime_1.jsx)(FolderIcon_1.FolderIcon, {}) }), (0, jsx_runtime_1.jsxs)("div", { className: "content-side", children: [(0, jsx_runtime_1.jsx)("h3", { children: (0, core_1.translate)("modal.wallet.logInToAny") }), (0, jsx_runtime_1.jsx)("p", { children: (0, core_1.translate)("modal.wallet.noNeedToCreate") })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "button-spacing" }), (0, jsx_runtime_1.jsx)("button", { className: "middleButton", onClick: () => { + setRoute("GetWallets"); + }, children: (0, core_1.translate)("modal.wallet.getAWallet") })] }), (0, jsx_runtime_1.jsxs)("div", { className: "what-wallet-mobile", children: [(0, jsx_runtime_1.jsx)("p", { children: (0, core_1.translate)("modal.wallet.useAWallet") }), (0, jsx_runtime_1.jsx)("button", { className: "middleButton", onClick: () => { + setRoute("GetWallets"); + }, children: (0, core_1.translate)("modal.wallet.getAWallet") })] }), (0, jsx_runtime_1.jsx)("div", { className: "lang-selector-wrapper", children: (0, jsx_runtime_1.jsxs)("select", { className: "lang-selector", name: "lang", children: [(0, jsx_runtime_1.jsx)("option", { value: "en", children: "English" }), (0, jsx_runtime_1.jsx)("option", { value: "es", children: "Spanish" })] }) })] }))] })); +}; +exports.WalletHome = WalletHome; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNetworkChanged.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNetworkChanged.d.ts new file mode 100644 index 000000000..af250b77b --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNetworkChanged.d.ts @@ -0,0 +1,10 @@ +import React from "react"; +import type { WalletSelector } from "@near-wallet-selector/core"; +interface WalletNetworkChangedProps { + selector: WalletSelector; + onBack: () => void; + onCloseModal: () => void; +} +export declare const WalletNetworkChanged: React.FC; +export {}; +//# sourceMappingURL=WalletNetworkChanged.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNetworkChanged.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNetworkChanged.d.ts.map new file mode 100644 index 000000000..d9c0c050f --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNetworkChanged.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletNetworkChanged.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletNetworkChanged.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,UAAU,yBAAyB;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA6BpE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNetworkChanged.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNetworkChanged.js new file mode 100644 index 000000000..389ab471e --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNetworkChanged.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletNetworkChanged = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = require("react"); +const ModalHeader_1 = require("./ModalHeader"); +const BackArrow_1 = require("./BackArrow"); +const WalletNetworkChanged = ({ selector, onBack, onCloseModal, }) => { + return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "nws-modal-header-wrapper", children: [(0, jsx_runtime_1.jsx)(BackArrow_1.BackArrow, { onClick: onBack }), (0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: "You Must Change the Network", onCloseModal: onCloseModal })] }), (0, jsx_runtime_1.jsx)("div", { className: "switch-network-message-wrapper", children: (0, jsx_runtime_1.jsxs)("div", { className: "content", children: [(0, jsx_runtime_1.jsxs)("p", { children: ["We've detected that you need to change your wallet's network to", (0, jsx_runtime_1.jsx)("strong", { className: "network-id", children: ` ${selector.options.network.networkId}` }), " ", "for this dApp."] }), (0, jsx_runtime_1.jsx)("p", { children: "Some wallets may not support changing networks. If you can not change networks you may consider switching to another wallet." })] }) })] })); +}; +exports.WalletNetworkChanged = WalletNetworkChanged; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNotInstalled.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNotInstalled.d.ts new file mode 100644 index 000000000..ee0fadf26 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNotInstalled.d.ts @@ -0,0 +1,14 @@ +import React from "react"; +import type { ModuleState } from "@near-wallet-selector/core"; +interface WalletNotInstalledProps { + module: ModuleState & { + metadata: { + downloadUrl?: string; + }; + }; + onBack: () => void; + onCloseModal: () => void; +} +export declare const WalletNotInstalled: React.FC; +export {}; +//# sourceMappingURL=WalletNotInstalled.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNotInstalled.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNotInstalled.d.ts.map new file mode 100644 index 000000000..2249ad357 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNotInstalled.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletNotInstalled.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletNotInstalled.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAK9D,UAAU,uBAAuB;IAC/B,MAAM,EAAE,WAAW,GAAG;QACpB,QAAQ,EAAE;YACR,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,CAAC;IACF,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA8ChE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNotInstalled.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNotInstalled.js new file mode 100644 index 000000000..e013937e3 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletNotInstalled.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletNotInstalled = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = require("react"); +const ModalHeader_1 = require("./ModalHeader"); +const BackArrow_1 = require("./BackArrow"); +const core_1 = require("@near-wallet-selector/core"); +const WalletNotInstalled = ({ module, onBack, onCloseModal, }) => { + return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "nws-modal-header-wrapper", children: [(0, jsx_runtime_1.jsx)(BackArrow_1.BackArrow, { onClick: onBack }), (0, jsx_runtime_1.jsx)(ModalHeader_1.ModalHeader, { title: "", onCloseModal: onCloseModal })] }), (0, jsx_runtime_1.jsxs)("div", { className: "wallet-not-installed-wrapper", children: [(0, jsx_runtime_1.jsxs)("div", { className: "wallet-data", children: [(0, jsx_runtime_1.jsx)("div", { className: `wallet-icon-box ${module.id}`, children: (0, jsx_runtime_1.jsx)("img", { src: module.metadata.iconUrl, alt: module.metadata.name }) }), (0, jsx_runtime_1.jsx)("p", { children: module.metadata.name })] }), (0, jsx_runtime_1.jsxs)("p", { children: [(0, core_1.translate)("modal.install.youllNeedToInstall"), " ", module.metadata.name, " ", (0, core_1.translate)("modal.install.toContinueAfterInstalling"), (0, jsx_runtime_1.jsxs)("span", { className: "refresh-link", onClick: () => window.location.reload(), children: [" ", (0, core_1.translate)("modal.install.refreshThePage")] })] }), (0, jsx_runtime_1.jsx)("div", { className: "action-buttons", children: (0, jsx_runtime_1.jsxs)("button", { className: "middleButton", onClick: () => { + if (module.type !== "injected") { + return; + } + window.open(module.metadata.downloadUrl, "_blank"); + }, children: [(0, core_1.translate)("modal.install.open"), " ", module.metadata.name] }) })] })] })); +}; +exports.WalletNotInstalled = WalletNotInstalled; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletOptions.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletOptions.d.ts new file mode 100644 index 000000000..0cdbb780f --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletOptions.d.ts @@ -0,0 +1,9 @@ +import React from "react"; +import type { WalletSelector, ModuleState } from "@near-wallet-selector/core"; +interface WalletOptionsProps { + selector: WalletSelector; + handleWalletClick: (module: ModuleState) => void; +} +export declare const WalletOptions: React.FC; +export {}; +//# sourceMappingURL=WalletOptions.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletOptions.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletOptions.d.ts.map new file mode 100644 index 000000000..62000a68b --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletOptions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletOptions.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EAEZ,MAAM,4BAA4B,CAAC;AAGpC,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,iBAAiB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAClD;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAqJtD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletOptions.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletOptions.js new file mode 100644 index 000000000..39733f106 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/WalletOptions.js @@ -0,0 +1,85 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletOptions = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const react_1 = require("react"); +const WarningIcon_1 = require("./icons/WarningIcon"); +const WalletOptions = ({ selector, handleWalletClick, }) => { + const [modules, setModules] = (0, react_1.useState)([]); + const [recentModules, setRecentModules] = (0, react_1.useState)([]); + const [moreModules, setMoreModules] = (0, react_1.useState)([]); + const [activeWalletId, setActiveWalletId] = (0, react_1.useState)(""); + (0, react_1.useEffect)(() => { + const subscription = selector.store.observable.subscribe((state) => { + const { selectedWalletId } = selector.store.getState(); + if (selectedWalletId) { + setActiveWalletId(selectedWalletId); + } + const wallets = state.modules.filter((module) => !(module.type === "instant-link" && selectedWalletId !== module.id)); + if (selector.options.optimizeWalletOrder) { + state.modules.sort((current, next) => { + if (current.metadata.deprecated === next.metadata.deprecated) { + return 0; + } + return current.metadata.deprecated ? 1 : -1; + }); + state.modules.sort((current, next) => { + if (next.metadata.available === current.metadata.available) { + return 0; + } + return next.metadata.available ? 1 : -1; + }); + const moreWallets = []; + const recentlySignedInWallets = []; + wallets.forEach((module) => { + if (selector.store + .getState() + .recentlySignedInWallets.includes(module.id)) { + recentlySignedInWallets.push(module); + } + else { + moreWallets.push(module); + } + }); + setRecentModules(recentlySignedInWallets); + setMoreModules(moreWallets); + } + if (selector.options.randomizeWalletOrder) { + setModules(wallets.sort(() => Math.random() - 0.5)); + } + else { + setModules(wallets); + } + }); + return () => subscription.unsubscribe(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + (0, react_1.useEffect)(() => { + const { recentlySignedInWallets } = selector.store.getState(); + if (recentlySignedInWallets.length) { + setActiveWalletId(recentlySignedInWallets[0]); + } + }, [selector.store]); + function renderOptionsList(modulesToRender) { + return modulesToRender.reduce((result, module, index) => { + const { selectedWalletId } = selector.store.getState(); + const { name, description, iconUrl, deprecated } = module.metadata; + const selected = module.id === selectedWalletId; + result.push((0, jsx_runtime_1.jsxs)("li", { tabIndex: 0, className: `single-wallet ${activeWalletId === module.id ? "selected-wallet" : ""} ${selected ? "connected-wallet" : ""} ${deprecated ? "deprecated-wallet" : ""} sidebar ${module.id}`, onClick: () => { + if (selector.options.network.networkId === "testnet" && + module.id === "here-wallet") { + alert("Here Wallet is not supported on testnet"); + return; + } + if (module.id === modulesToRender[index].id) { + setActiveWalletId(module.id); + } + return handleWalletClick(module); + }, children: [(0, jsx_runtime_1.jsx)("div", { className: "icon", children: (0, jsx_runtime_1.jsx)("img", { src: iconUrl, alt: name }) }), (0, jsx_runtime_1.jsxs)("div", { className: "content", children: [(0, jsx_runtime_1.jsx)("div", { className: "title", children: name }), (0, jsx_runtime_1.jsx)("div", { className: "description", children: description })] }), deprecated && ((0, jsx_runtime_1.jsx)("div", { className: "warning-triangle", children: (0, jsx_runtime_1.jsx)(WarningIcon_1.WarningIcon, {}) }))] }, module.id)); + return result; + }, []); + } + return ((0, jsx_runtime_1.jsx)("div", { children: selector.options.optimizeWalletOrder && + selector.store.getState().recentlySignedInWallets.length > 0 ? ((0, jsx_runtime_1.jsxs)("div", { className: "wallet-options-wrapper", children: [(0, jsx_runtime_1.jsxs)("div", { className: "options-list-section-recent", children: [(0, jsx_runtime_1.jsx)("div", { className: "options-list-section-header", children: "Recent" }), (0, jsx_runtime_1.jsx)("div", { className: "options-list more-options-list-content", children: renderOptionsList(recentModules) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "options-list-section-more", children: [(0, jsx_runtime_1.jsx)("div", { className: "options-list-section-header", children: "More" }), (0, jsx_runtime_1.jsx)("div", { className: "options-list more-options-list-content", children: renderOptionsList(moreModules) })] })] })) : ((0, jsx_runtime_1.jsx)("div", { className: "wallet-options-wrapper", children: (0, jsx_runtime_1.jsx)("div", { className: "options-list", children: renderOptionsList(modules) }) })) })); +}; +exports.WalletOptions = WalletOptions; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts new file mode 100644 index 000000000..a81df61f0 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const BackArrowIcon: React.FC; +//# sourceMappingURL=BackArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts.map new file mode 100644 index 000000000..c0071a24f --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BackArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/BackArrowIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAkBjC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/BackArrowIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/BackArrowIcon.js new file mode 100644 index 000000000..2355a15d0 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/BackArrowIcon.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BackArrowIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const BackArrowIcon = () => { + return ((0, jsx_runtime_1.jsx)("svg", { width: "8", height: "14", viewBox: "0 0 8 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, jsx_runtime_1.jsx)("path", { d: "M7 13L1 7L7 1", stroke: "#6494EE", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })); +}; +exports.BackArrowIcon = BackArrowIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CloseIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CloseIcon.d.ts new file mode 100644 index 000000000..c89027187 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CloseIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const CloseIcon: React.FC; +//# sourceMappingURL=CloseIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CloseIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CloseIcon.d.ts.map new file mode 100644 index 000000000..cdf4a639e --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CloseIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CloseIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/CloseIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAa7B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CloseIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CloseIcon.js new file mode 100644 index 000000000..f28625aaa --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CloseIcon.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CloseIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const CloseIcon = () => { + return ((0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24", viewBox: "0 0 24 24", width: "24", fill: "#C1C1C1", children: [(0, jsx_runtime_1.jsx)("path", { d: "M0 0h24v24H0z", fill: "none" }), (0, jsx_runtime_1.jsx)("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })] })); +}; +exports.CloseIcon = CloseIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts new file mode 100644 index 000000000..3b05d27c6 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const ConnectionErrorIcon: React.FC; +//# sourceMappingURL=ConnectionErrorIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts.map new file mode 100644 index 000000000..ae7aa2503 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionErrorIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/ConnectionErrorIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAgCvC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionErrorIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionErrorIcon.js new file mode 100644 index 000000000..f3d476acc --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionErrorIcon.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConnectionErrorIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const ConnectionErrorIcon = () => { + return ((0, jsx_runtime_1.jsxs)("svg", { width: "21", height: "20", viewBox: "0 0 21 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { d: "M10.5001 18.3333C15.1025 18.3333 18.8334 14.6023 18.8334 9.99996C18.8334 5.39759 15.1025 1.66663 10.5001 1.66663C5.89771 1.66663 2.16675 5.39759 2.16675 9.99996C2.16675 14.6023 5.89771 18.3333 10.5001 18.3333Z", stroke: "#CE5A6F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M13 7.5L8 12.5", stroke: "#CE5A6F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M8 7.5L13 12.5", stroke: "#CE5A6F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] })); +}; +exports.ConnectionErrorIcon = ConnectionErrorIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts new file mode 100644 index 000000000..14eb5483e --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const ConnectionSuccessIcon: React.FC; +//# sourceMappingURL=ConnectionSuccessIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map new file mode 100644 index 000000000..9eede62f6 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionSuccessIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/ConnectionSuccessIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAyBzC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.js new file mode 100644 index 000000000..42acf870b --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConnectionSuccessIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const ConnectionSuccessIcon = () => { + return ((0, jsx_runtime_1.jsxs)("svg", { width: "21", height: "20", viewBox: "0 0 21 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { d: "M18.8333 9.2333V9.99997C18.8323 11.797 18.2504 13.5455 17.1744 14.9848C16.0984 16.4241 14.586 17.477 12.8628 17.9866C11.1395 18.4961 9.29768 18.4349 7.61202 17.8121C5.92636 17.1894 4.48717 16.0384 3.50909 14.5309C2.53101 13.0233 2.06645 11.24 2.18469 9.4469C2.30293 7.65377 2.99763 5.94691 4.16519 4.58086C5.33275 3.21482 6.91061 2.26279 8.66345 1.86676C10.4163 1.47073 12.2502 1.65192 13.8916 2.3833", stroke: "#4FD98F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M18.8333 3.33337L10.5 11.675L8 9.17504", stroke: "#4FD98F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] })); +}; +exports.ConnectionSuccessIcon = ConnectionSuccessIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CopyIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CopyIcon.d.ts new file mode 100644 index 000000000..3ac535cc2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CopyIcon.d.ts @@ -0,0 +1,2 @@ +export declare const CopyIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=CopyIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CopyIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CopyIcon.d.ts.map new file mode 100644 index 000000000..a52fb1563 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CopyIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CopyIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/CopyIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,+CAuBpB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CopyIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CopyIcon.js new file mode 100644 index 000000000..67866c1c2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/CopyIcon.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CopyIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const CopyIcon = () => ((0, jsx_runtime_1.jsxs)("svg", { width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { d: "M6.5 15.25a1.75 1.75 0 0 1-1.75-1.75V6.75a2 2 0 0 1 2-2h6.75c.966 0 1.75.784 1.75 1.75", stroke: "#4F7CD1", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M8.75 10.75a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-6.5Z", stroke: "#4F7CD1", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" })] })); +exports.CopyIcon = CopyIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts new file mode 100644 index 000000000..20f6bc75f --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const DownArrowIcon: React.FC; +//# sourceMappingURL=DownArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts.map new file mode 100644 index 000000000..ed672da4d --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DownArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/DownArrowIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAkBjC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/DownArrowIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/DownArrowIcon.js new file mode 100644 index 000000000..bba4d73eb --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/DownArrowIcon.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DownArrowIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const DownArrowIcon = () => { + return ((0, jsx_runtime_1.jsx)("svg", { width: "10", height: "7", viewBox: "0 0 10 7", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, jsx_runtime_1.jsx)("path", { d: "M1 1.52382L5 5.52382L9 1.52382", stroke: "#4F7CD1", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })); +}; +exports.DownArrowIcon = DownArrowIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/FolderIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/FolderIcon.d.ts new file mode 100644 index 000000000..310e7a78b --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/FolderIcon.d.ts @@ -0,0 +1,2 @@ +export declare const FolderIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=FolderIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/FolderIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/FolderIcon.d.ts.map new file mode 100644 index 000000000..6086bad39 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/FolderIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FolderIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/FolderIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,+CAwBtB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/FolderIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/FolderIcon.js new file mode 100644 index 000000000..9efdc6b7c --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/FolderIcon.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FolderIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const FolderIcon = () => ((0, jsx_runtime_1.jsxs)("svg", { width: "40", height: "41", viewBox: "0 0 40 41", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "28.3333", cy: "23.8333", r: "1.66667", fill: "currentColor" }), (0, jsx_runtime_1.jsx)("path", { d: "M35 12.1667H7C5.89543 12.1667 5 11.2712 5 10.1667V7.5C5 6.39543 5.89543 5.5 7 5.5H31.6667", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M35 12.1667V35.5H7C5.89543 35.5 5 34.6046 5 33.5V8.83334", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" })] })); +exports.FolderIcon = FolderIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/KeyIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/KeyIcon.d.ts new file mode 100644 index 000000000..630584ddd --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/KeyIcon.d.ts @@ -0,0 +1,2 @@ +export declare const KeyIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=KeyIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/KeyIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/KeyIcon.d.ts.map new file mode 100644 index 000000000..c0260ab65 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/KeyIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KeyIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/KeyIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,+CAgBnB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/KeyIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/KeyIcon.js new file mode 100644 index 000000000..9d626f0dc --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/KeyIcon.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KeyIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const KeyIcon = () => ((0, jsx_runtime_1.jsx)("svg", { width: "40", height: "40", viewBox: "0 0 40 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, jsx_runtime_1.jsx)("path", { d: "M33.5 1.83325L30.1666 5.16658M17.4818 17.8514C19.1406 19.5103 20.1666 21.8019 20.1666 24.3333C20.1666 29.3959 16.0626 33.4999 11 33.4999C5.93735 33.4999 1.8333 29.3959 1.8333 24.3333C1.8333 19.2706 5.93735 15.1666 11 15.1666C13.5313 15.1666 15.8229 16.1926 17.4818 17.8514ZM17.4818 17.8514L24.3333 10.9999M24.3333 10.9999L29.3333 15.9999L35.1666 10.1666L30.1666 5.16658M24.3333 10.9999L30.1666 5.16658", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }) })); +exports.KeyIcon = KeyIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts new file mode 100644 index 000000000..f3e1c1b4b --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const LedgerDeviceIcon: React.FC; +//# sourceMappingURL=LedgerDeviceIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts.map new file mode 100644 index 000000000..ca21c0263 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LedgerDeviceIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/LedgerDeviceIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAoLpC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LedgerDeviceIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LedgerDeviceIcon.js new file mode 100644 index 000000000..34a23ed52 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LedgerDeviceIcon.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LedgerDeviceIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const LedgerDeviceIcon = () => { + return ((0, jsx_runtime_1.jsxs)("svg", { width: "317", height: "157", viewBox: "0 0 317 157", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M249.99 16.0994C270.063 -0.864155 289.788 1.58873 301.497 10.7365C307.402 15.3499 311.278 21.6575 312.267 28.1258C313.247 34.5412 311.413 41.2233 305.692 46.8044C297.366 54.9273 286.343 55.3362 273.015 51.5109C261.654 48.25 249.058 42.0377 235.726 35.4627L235.726 35.4626L235.717 35.458C233.367 34.2992 230.995 33.129 228.602 31.9618C212.742 24.2253 196.067 16.6575 179.842 13.8595C163.538 11.0479 147.552 13.0313 133.266 24.522C128.032 28.732 123.478 35.2086 121.716 44.8205C119.961 54.3947 120.992 66.9771 126.703 83.4311C135.432 108.583 132.899 126.677 123.575 138.063C114.217 149.491 97.5614 154.733 76.7887 153.121C55.0043 151.43 29.0621 142.206 3.29867 125.227L0.887817 127.942C27.2472 145.405 53.9251 154.952 76.5105 156.705C97.9028 158.365 115.96 153.035 126.356 140.341C136.785 127.606 139.045 108.029 130.099 82.2524C124.521 66.1801 123.642 54.2493 125.252 45.4687C126.854 36.7258 130.94 31.006 135.519 27.3232C148.794 16.6458 163.649 14.715 179.231 17.4021C194.891 20.1027 211.146 27.4463 227.026 35.1928C229.381 36.3415 231.729 37.5001 234.066 38.6531L234.073 38.6568C247.382 45.223 260.324 51.608 272.024 54.9662C285.819 58.9258 298.493 58.8501 308.202 49.3776C314.764 42.9759 316.974 35.1288 315.82 27.5826C314.675 20.0893 310.237 13.0029 303.71 7.90363C290.555 -2.37382 268.938 -4.62038 247.67 13.3537L249.99 16.0994Z", fill: "url(#paint0_linear_3_672)" }), (0, jsx_runtime_1.jsx)("path", { d: "M260.264 17.8767L177.605 89.4649L157.679 73.9664L239.23 3.85423L260.264 17.8767Z", fill: "#6A7075" }), (0, jsx_runtime_1.jsx)("path", { d: "M205.939 54.4577L199.764 50.2636L233.316 20.9053L239.907 25.8395L205.939 54.4577Z", fill: "#494E52" }), (0, jsx_runtime_1.jsx)("path", { d: "M260.264 17.8757L177.605 89.4639L182.033 98.3202L264.323 26.363L260.264 17.8757Z", fill: "#494E52" }), (0, jsx_runtime_1.jsx)("path", { d: "M177.236 89.4646L181.295 98.3209L165.059 85.7745L170.963 85.0365L177.236 89.4646Z", fill: "black" }), (0, jsx_runtime_1.jsx)("path", { d: "M93.4708 99.6384L91.9948 110.13L174.653 92.894L164.69 85.7749L93.4708 99.6384Z", fill: "#DCDADA" }), (0, jsx_runtime_1.jsx)("path", { d: "M93.1157 104.323L94.314 100.129L165.613 86.3483L169.208 89.344L93.1157 104.323Z", fill: "#C1C1C1" }), (0, jsx_runtime_1.jsx)("path", { d: "M94.2086 99.7963L86.0903 101.272L92.3635 110.129L94.2086 99.7963Z", fill: "#B3AAAA" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M86.0903 100.907L89.0027 74.1304L178.455 55.2416C184.695 53.9962 195.766 54.7675 197.177 63.7058C198.284 70.717 195.506 73.9943 191.628 77.3592C188.495 80.0671 180.152 82.4646 178.343 82.8944C178.293 82.9064 178.241 82.9188 178.186 82.9319C177.38 83.1245 176.007 83.4525 170.644 84.5088C169.085 84.8158 167.382 85.1501 165.557 85.5078L164.933 85.63C146.312 89.2764 115.528 95.2297 93.9844 99.3849C91.1808 99.9257 88.5337 100.436 86.0903 100.907ZM185.076 75.554C190.748 73.3535 193.99 68.0745 192.318 63.7631C190.645 59.4517 184.691 57.7405 179.019 59.941C173.347 62.1416 170.105 67.4206 171.778 71.732C173.45 76.0434 179.404 77.7546 185.076 75.554Z", fill: "#F4F1E8" }), (0, jsx_runtime_1.jsx)("path", { d: "M199.764 50.3994L196.768 48.3043L232.194 18.0454L233.316 21.6403L199.764 50.3994Z", fill: "black" }), (0, jsx_runtime_1.jsx)("path", { d: "M239.968 25.9943L232.588 20.4592V17.5071L241.813 24.5183L239.968 25.9943Z", fill: "black" }), (0, jsx_runtime_1.jsx)("ellipse", { cx: "182.084", cy: "68.0811", rx: "10.242", ry: "7.46772", transform: "rotate(-23.7949 182.084 68.0811)", fill: "#494E52" }), (0, jsx_runtime_1.jsx)("ellipse", { cx: "182.084", cy: "68.0816", rx: "6.68462", ry: "4.87394", transform: "rotate(-23.7949 182.084 68.0816)", fill: "#494E52" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M238.725 2.93094L260.368 17.2564L264.865 26.4556L181.615 99.0341L175.16 94.311L92.0028 110.947L85.3267 101.399L88.3269 73.8157L178.118 54.8553L238.725 2.93094ZM178.599 56.2622L89.6786 75.0388L86.9321 100.29C89.0979 99.8725 91.4124 99.4263 93.8446 98.9572C115.388 94.8019 146.171 88.8488 164.791 85.2026L165.415 85.0804C167.24 84.7228 168.943 84.3885 170.501 84.0816C175.853 83.0275 177.219 82.701 178.015 82.5107C178.07 82.4976 178.122 82.4852 178.173 82.4732C179.048 82.2652 181.558 81.5669 184.235 80.5851C186.742 79.6655 189.286 78.5354 190.802 77.3758L191.151 77.0922L191.644 76.6595C193.341 75.147 194.723 73.6739 195.61 71.871C196.571 69.916 196.982 67.5029 196.448 64.1178C195.8 60.0131 192.959 57.7574 189.408 56.6566C185.833 55.5483 181.637 55.6566 178.603 56.2615C178.601 56.2617 178.6 56.262 178.599 56.2622ZM192.631 77.7565L259.555 18.9531L263.042 26.0869L181.808 96.9078L178.132 89.5713L191.724 78.529C191.859 78.4249 191.988 78.32 192.11 78.2144L192.111 78.2136C192.286 78.0617 192.46 77.9094 192.631 77.7565ZM185.491 81.6908C185.24 81.7868 184.99 81.8802 184.743 81.9709C182.013 82.9723 179.447 83.6875 178.514 83.9093C178.463 83.9213 178.411 83.9338 178.356 83.9468C177.635 84.1192 176.472 84.3971 172.491 85.1919L177.172 88.4492L185.491 81.6908ZM176.631 89.8707L170.479 85.5903C169.306 85.8213 168.054 86.0673 166.731 86.3265L175.769 92.9276L179.548 95.6924L176.631 89.8707ZM164.758 86.7132C146.252 90.3362 116.027 96.1817 94.6324 100.308L93.2258 109.197L173.543 93.1293L164.758 86.7132ZM91.888 108.207L93.0909 100.606C91.0848 100.993 89.1642 101.363 87.3471 101.713L91.888 108.207ZM258.581 17.8436L197.306 71.6841C198.142 69.5779 198.41 67.0795 197.906 63.8876C197.143 59.0539 193.743 56.4549 189.845 55.2467C186.921 54.3402 183.662 54.1916 180.861 54.449L238.84 4.77668L258.581 17.8436ZM232.505 16.82L243.089 24.5643L205.915 56.5106L196.042 48.0665L232.505 16.82ZM232.118 19.096L198.312 48.0654L199.744 49.29L232.584 20.9424L232.118 19.096ZM233.456 22.1396L200.878 50.2604L205.913 54.5664L239.041 26.0969L233.456 22.1396ZM240.195 25.1054L240.717 24.6571L233.759 19.5663L234.06 20.7586L240.195 25.1054Z", fill: "black" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M190.194 69.9744C191.32 68.1409 191.576 66.2271 190.942 64.5937C190.308 62.9603 188.829 61.7198 186.761 61.1254C184.691 60.5307 182.116 60.6196 179.553 61.6139C176.991 62.6081 175.029 64.2794 173.902 66.1141C172.776 67.9477 172.52 69.8614 173.154 71.4948C173.788 73.1282 175.267 74.3687 177.335 74.9631C179.405 75.5578 181.98 75.4689 184.543 74.4746C187.105 73.4804 189.067 71.8091 190.194 69.9744ZM185.077 75.8508C190.749 73.6502 193.991 68.3712 192.318 64.0598C190.645 59.7484 184.691 58.0372 179.019 60.2378C173.347 62.4383 170.105 67.7173 171.778 72.0287C173.451 76.3401 179.405 78.0513 185.077 75.8508Z", fill: "black" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M187.391 69.169C188.127 67.9713 188.266 66.7721 187.881 65.7812C187.497 64.7903 186.586 63.9984 185.235 63.6102C183.883 63.2216 182.173 63.2741 180.456 63.9404C178.738 64.6068 177.441 65.7208 176.705 66.9196C175.969 68.1172 175.83 69.3165 176.215 70.3074C176.599 71.2983 177.511 72.0901 178.861 72.4783C180.214 72.8669 181.923 72.8144 183.64 72.1481C185.358 71.4818 186.655 70.3678 187.391 69.169ZM184.174 73.5242C188.156 71.9795 190.432 68.2738 189.257 65.2473C188.083 62.2208 183.904 61.0196 179.922 62.5643C175.94 64.1091 173.665 67.8148 174.839 70.8412C176.013 73.8677 180.193 75.0689 184.174 73.5242Z", fill: "black" }), (0, jsx_runtime_1.jsx)("path", { d: "M240.499 41.2441C239.744 40.3649 239.844 39.04 240.724 38.285L249.781 30.5067C250.66 29.7516 251.985 29.8523 252.74 30.7315V30.7315C253.495 31.6108 253.395 32.9356 252.516 33.6907L243.458 41.469C242.579 42.224 241.254 42.1234 240.499 41.2441V41.2441Z", fill: "black" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M250.743 31.6265L241.685 39.4048C241.424 39.6287 241.395 40.0217 241.619 40.2825C241.842 40.5433 242.235 40.5731 242.496 40.3492L251.554 32.5709C251.815 32.3469 251.845 31.954 251.621 31.6932C251.397 31.4324 251.004 31.4025 250.743 31.6265ZM240.724 38.285C239.844 39.04 239.744 40.3649 240.499 41.2441C241.254 42.1234 242.579 42.224 243.458 41.469L252.516 33.6907C253.395 32.9356 253.495 31.6108 252.74 30.7315C251.985 29.8523 250.66 29.7516 249.781 30.5067L240.724 38.285Z", fill: "black" }), (0, jsx_runtime_1.jsx)("path", { d: "M205.779 71.4647C205.005 70.5642 205.108 69.2073 206.009 68.4339L214.989 60.7218C215.89 59.9485 217.247 60.0516 218.02 60.9521V60.9521C218.793 61.8526 218.69 63.2095 217.79 63.9829L208.809 71.695C207.909 72.4683 206.552 72.3652 205.779 71.4647V71.4647Z", fill: "black" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M215.951 61.8416L206.97 69.5537C206.688 69.796 206.656 70.221 206.898 70.5031C207.141 70.7851 207.566 70.8174 207.848 70.5752L216.828 62.863C217.11 62.6208 217.143 62.1958 216.9 61.9137C216.658 61.6317 216.233 61.5994 215.951 61.8416ZM206.009 68.4339C205.108 69.2073 205.005 70.5642 205.779 71.4647C206.552 72.3652 207.909 72.4683 208.809 71.695L217.79 63.9829C218.69 63.2095 218.793 61.8526 218.02 60.9521C217.247 60.0516 215.89 59.9485 214.989 60.7218L206.009 68.4339Z", fill: "black" }), (0, jsx_runtime_1.jsx)("circle", { cx: "141.356", cy: "19.525", r: "10.1855", fill: "#FE89B4" }), (0, jsx_runtime_1.jsx)("ellipse", { cx: "139.062", cy: "14.7094", rx: "2.42519", ry: "1.94015", transform: "rotate(-34.544 139.062 14.7094)", fill: "#FDF7FF" }), (0, jsx_runtime_1.jsx)("circle", { cx: "252.489", cy: "79.7577", r: "7.78893", fill: "#EC5236" }), (0, jsx_runtime_1.jsx)("ellipse", { cx: "250.434", cy: "76.3701", rx: "2.61272", ry: "2.09018", transform: "rotate(-34.544 250.434 76.3701)", fill: "#EDB69D" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M100.436 79.9254C100.461 79.6567 100.732 79.3897 101.042 79.329L106.657 78.2299C107.587 78.0478 108.281 78.5536 108.207 79.3596L107.759 84.2243C107.734 84.493 107.463 84.76 107.153 84.8207L100.416 86.1396C100.106 86.2003 99.8742 86.0317 99.899 85.7631L100.436 79.9254Z", fill: "#B3AAAA" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M95.8553 81.7775C95.9294 80.9715 96.7437 80.1704 97.6739 79.9883L98.7968 79.7685C99.1069 79.7078 99.3382 79.8764 99.3135 80.1451L99.1344 82.091C99.1096 82.3597 98.8382 82.6267 98.5282 82.6874L96.2824 83.127C95.9723 83.1877 95.741 83.0191 95.7657 82.7505L95.8553 81.7775Z", fill: "#B3AAAA" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M95.5865 84.6965C95.6112 84.4278 95.8826 84.1608 96.1927 84.1001L98.4385 83.6605C98.7486 83.5998 98.9799 83.7684 98.9552 84.037L98.7761 85.9829C98.7513 86.2516 98.4799 86.5186 98.1699 86.5793L95.9241 87.019C95.614 87.0797 95.3827 86.9111 95.4074 86.6424L95.5865 84.6965Z", fill: "#B3AAAA" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M95.2282 88.5884C95.2529 88.3197 95.5244 88.0527 95.8344 87.992L98.0802 87.5524C98.3903 87.4917 98.6216 87.6603 98.5969 87.929L98.4178 89.8749C98.3931 90.1435 98.1216 90.4105 97.8116 90.4712L96.6887 90.6911C95.7584 90.8732 95.0645 90.3674 95.1387 89.5614L95.2282 88.5884Z", fill: "#B3AAAA" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M99.7197 87.709C99.7444 87.4403 100.016 87.1733 100.326 87.1126L102.572 86.673C102.882 86.6123 103.113 86.7809 103.088 87.0496L102.909 88.9955C102.885 89.2641 102.613 89.5312 102.303 89.5919L100.057 90.0315C99.7472 90.0922 99.5159 89.9236 99.5406 89.6549L99.7197 87.709Z", fill: "#B3AAAA" }), (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M104.211 86.8298C104.236 86.5611 104.507 86.2941 104.817 86.2334L107.063 85.7938C107.373 85.7331 107.605 85.9017 107.58 86.1704L107.49 87.1433C107.416 87.9493 106.602 88.7504 105.672 88.9325L104.549 89.1523C104.239 89.213 104.007 89.0444 104.032 88.7757L104.211 86.8298Z", fill: "#B3AAAA" }), (0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsxs)("linearGradient", { id: "paint0_linear_3_672", x1: "-44.5195", y1: "122.42", x2: "263.357", y2: "-8.65023", gradientUnits: "userSpaceOnUse", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0.110697", stopColor: "#232323" }), (0, jsx_runtime_1.jsx)("stop", { offset: "1", stopColor: "#3D3D3D" })] }) })] })); +}; +exports.LedgerDeviceIcon = LedgerDeviceIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LinkIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LinkIcon.d.ts new file mode 100644 index 000000000..836729de4 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LinkIcon.d.ts @@ -0,0 +1,2 @@ +export declare const LinkIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=LinkIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LinkIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LinkIcon.d.ts.map new file mode 100644 index 000000000..f05a60a53 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LinkIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LinkIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/LinkIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,+CA2BpB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LinkIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LinkIcon.js new file mode 100644 index 000000000..406ee3bf1 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/LinkIcon.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LinkIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const LinkIcon = () => ((0, jsx_runtime_1.jsxs)("svg", { width: "18", height: "16", viewBox: "0 0 18 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { d: "M13 8.66667V12.6667C13 13.0203 12.8478 13.3594 12.577 13.6095C12.3061 13.8595 11.9387 14 11.5556 14H3.61113C3.22804 14 2.86064 13.8595 2.58975 13.6095C2.31887 13.3594 2.16669 13.0203 2.16669 12.6667V5.33333C2.16669 4.97971 2.31887 4.64057 2.58975 4.39052C2.86064 4.14048 3.22804 4 3.61113 4H7.94447", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M10.8333 2H15.1666V6", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M7.22223 9.33333L15.1667 2", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" })] })); +exports.LinkIcon = LinkIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/QRIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/QRIcon.d.ts new file mode 100644 index 000000000..d7a585a75 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/QRIcon.d.ts @@ -0,0 +1,2 @@ +export declare const QRIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=QRIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/QRIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/QRIcon.d.ts.map new file mode 100644 index 000000000..d2700eb40 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/QRIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"QRIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/QRIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,+CAsDlB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/QRIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/QRIcon.js new file mode 100644 index 000000000..0e6290c13 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/QRIcon.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.QRIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const QRIcon = () => ((0, jsx_runtime_1.jsxs)("svg", { width: "18", height: "16", viewBox: "0 0 18 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { d: "M7.22224 1.33334H1.44446V6.66668H7.22224V1.33334Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M15.8889 1.33334H10.1111V6.66668H15.8889V1.33334Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M7.22224 9.33334H1.44446V14.6667H7.22224V9.33334Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M10.1111 13.1429V14.6667H15.8889M10.1111 9.33334V10.8572H12.5873V9.33334H15.8889V12.381", stroke: "#4C5155", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("rect", { x: "3.61108", y: "3.33334", width: "1.44444", height: "1.33333", fill: "#4C5155" }), (0, jsx_runtime_1.jsx)("rect", { x: "3.61108", y: "11.3333", width: "1.44444", height: "1.33333", fill: "#4C5155" }), (0, jsx_runtime_1.jsx)("rect", { x: "12.2778", y: "3.33334", width: "1.44445", height: "1.33333", fill: "#4C5155" })] })); +exports.QRIcon = QRIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts new file mode 100644 index 000000000..9d49ab770 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const UpArrowIcon: React.FC; +//# sourceMappingURL=UpArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts.map new file mode 100644 index 000000000..3c5c11bdd --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UpArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/UpArrowIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAkB/B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/UpArrowIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/UpArrowIcon.js new file mode 100644 index 000000000..4d0c4a4aa --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/UpArrowIcon.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UpArrowIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const UpArrowIcon = () => { + return ((0, jsx_runtime_1.jsx)("svg", { width: "10", height: "7", viewBox: "0 0 10 7", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, jsx_runtime_1.jsx)("path", { d: "M9 5.4762L5 1.4762L1 5.4762", stroke: "#4F7CD1", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })); +}; +exports.UpArrowIcon = UpArrowIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/WarningIcon.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/WarningIcon.d.ts new file mode 100644 index 000000000..1faa3ffe7 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/WarningIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const WarningIcon: React.FC; +//# sourceMappingURL=WarningIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/WarningIcon.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/WarningIcon.d.ts.map new file mode 100644 index 000000000..9b8130a57 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/WarningIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WarningIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/WarningIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EA6B/B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/WarningIcon.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/WarningIcon.js new file mode 100644 index 000000000..867f88610 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/components/icons/WarningIcon.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WarningIcon = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const WarningIcon = () => { + return ((0, jsx_runtime_1.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [(0, jsx_runtime_1.jsx)("path", { d: "M4.95215 16.3536L10.2152 5.85657C10.9531 4.38481 13.0538 4.38519 13.7912 5.85723L19.0494 16.3543C19.7156 17.6841 18.7486 19.25 17.2612 19.25H6.74001C5.25228 19.25 4.28535 17.6835 4.95215 16.3536Z", stroke: "#E6B73E", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M12 10V12", stroke: "#E6B73E", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), (0, jsx_runtime_1.jsx)("path", { d: "M12.5 16C12.5 16.2761 12.2761 16.5 12 16.5C11.7239 16.5 11.5 16.2761 11.5 16C11.5 15.7239 11.7239 15.5 12 15.5C12.2761 15.5 12.5 15.7239 12.5 16Z", stroke: "#E6B73E" })] })); +}; +exports.WarningIcon = WarningIcon; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.d.ts new file mode 100644 index 000000000..509f1b9cb --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.d.ts @@ -0,0 +1,10 @@ +import type { WalletSelector } from "@near-wallet-selector/core"; +import type { WalletSelectorModal, ModalOptions } from "./modal.types"; +/** + * Initiates a modal instance + * @param {WalletSelector} selector Selector + * @param {ModalOptions} options Modal options + * @returns {WalletSelectorModal} Returns a WalletSelectorModal object + */ +export declare const setupModal: (selector: WalletSelector, options: ModalOptions) => WalletSelectorModal; +//# sourceMappingURL=modal.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.d.ts.map new file mode 100644 index 000000000..80b3dece2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAUvE;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aACX,cAAc,WACf,YAAY,KACpB,mBA4DF,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.js new file mode 100644 index 000000000..979f49ea4 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.js @@ -0,0 +1,62 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupModal = void 0; +const jsx_runtime_1 = require("react/jsx-runtime"); +const client_1 = require("react-dom/client"); +const Modal_1 = require("./components/Modal"); +const core_1 = require("@near-wallet-selector/core"); +const MODAL_ELEMENT_ID = "near-wallet-selector-modal"; +let modalInstance = null; +let root = null; +/** + * Initiates a modal instance + * @param {WalletSelector} selector Selector + * @param {ModalOptions} options Modal options + * @returns {WalletSelectorModal} Returns a WalletSelectorModal object + */ +const setupModal = (selector, options) => { + if (!root) { + const body = document.body; + const container = document.createElement("div"); + container.id = MODAL_ELEMENT_ID; + body.appendChild(container); + root = (0, client_1.createRoot)(container); + } + const emitter = new core_1.EventEmitter(); + selector.store.getState().modules.forEach(async (module) => { + if ("topLevelInjected" in module.metadata) { + if (!module.metadata.topLevelInjected) { + return; + } + const wallet = await module.wallet(); + if (wallet.type !== "injected") { + return; + } + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + }); + } + }); + const render = (visible = false) => { + root.render((0, jsx_runtime_1.jsx)(Modal_1.Modal, { selector: selector, options: options, visible: visible, hide: () => render(false), emitter: emitter })); + }; + if (!modalInstance) { + modalInstance = { + show: () => { + render(true); + }, + hide: () => { + render(false); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; + } + return modalInstance; +}; +exports.setupModal = setupModal; diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.types.d.ts b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.types.d.ts new file mode 100644 index 000000000..7b4f5aee2 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.types.d.ts @@ -0,0 +1,33 @@ +import type { Subscription } from "@near-wallet-selector/core"; +export type Theme = "dark" | "light" | "auto"; +export interface ModalOptions { + contractId: string; + methodNames?: Array; + theme?: Theme; + description?: string; +} +export type ModalHideReason = "user-triggered" | "wallet-navigation"; +export type ModalEvents = { + onHide: { + hideReason: ModalHideReason; + }; +}; +export interface WalletSelectorModal { + /** + * Opens the modal for users to sign in to their preferred wallet. You can also use this method to switch wallets. + */ + show(): void; + /** + * Closes the modal. + */ + hide(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: ModalEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: ModalEvents[EventName]) => void): void; +} +//# sourceMappingURL=modal.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.types.d.ts.map b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.types.d.ts.map new file mode 100644 index 000000000..de8cef01c --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QAAE,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IACb;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IACb;;OAEG;IACH,EAAE,CAAC,SAAS,SAAS,MAAM,WAAW,EACpC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,GAChD,YAAY,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,SAAS,SAAS,MAAM,WAAW,EACrC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,GAChD,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.types.js b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/modal-ui/dist/cjs/modal-ui/src/lib/modal.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/modal-ui/dist/esm/core/src/index.d.ts b/packages/modal-ui/dist/esm/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/index.d.ts.map b/packages/modal-ui/dist/esm/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/index.js b/packages/modal-ui/dist/esm/core/src/index.js new file mode 100644 index 000000000..a545ffa59 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/index.js @@ -0,0 +1,5 @@ +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export { EventEmitter } from "./lib/services"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; diff --git a/packages/modal-ui/dist/esm/core/src/lib/constants.d.ts b/packages/modal-ui/dist/esm/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/constants.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/constants.js b/packages/modal-ui/dist/esm/core/src/lib/constants.js new file mode 100644 index 000000000..a75f1a50e --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/constants.js @@ -0,0 +1,11 @@ +export const PACKAGE_NAME = "near-wallet-selector"; +export const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export const REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +export const CONTRACT = "contract"; +export const PENDING_CONTRACT = "contract:pending"; +export const SELECTED_WALLET_ID = `selectedWalletId`; +export const PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/detect-browser.d.ts b/packages/modal-ui/dist/esm/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/detect-browser.js b/packages/modal-ui/dist/esm/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..c4e583914 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,70 @@ +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +export const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts b/packages/modal-ui/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/getActiveAccount.js b/packages/modal-ui/dist/esm/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..b2db314cb --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,3 @@ +export const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/index.d.ts b/packages/modal-ui/dist/esm/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/index.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/index.js b/packages/modal-ui/dist/esm/core/src/lib/helpers/index.js new file mode 100644 index 000000000..69aaf908c --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/index.js @@ -0,0 +1,5 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/payload.js b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..f2a7f147e --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,97 @@ +import { serialize } from "borsh"; +export const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +export const payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +export const serializeNep413 = (signMessageParams) => { + const payload = createPayload(signMessageParams); + return Buffer.from(serialize(payloadSchema, payload)); +}; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..f08e83f02 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,39 @@ +import { serialize } from "borsh"; +import { sha256 } from "js-sha256"; +import { payloadSchema } from "./payload"; +import { publicKeyFrom } from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import { JsonRpcProvider } from "@near-js/providers"; +export const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = serialize(payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = publicKeyFrom(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +export const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/waitFor.d.ts b/packages/modal-ui/dist/esm/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/waitFor.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/helpers/waitFor.js b/packages/modal-ui/dist/esm/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..55fc5398f --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/helpers/waitFor.js @@ -0,0 +1,22 @@ +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +export const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/ar.json b/packages/modal-ui/dist/esm/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/bg.json b/packages/modal-ui/dist/esm/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/en.json b/packages/modal-ui/dist/esm/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/es.json b/packages/modal-ui/dist/esm/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/hi.json b/packages/modal-ui/dist/esm/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/hr.json b/packages/modal-ui/dist/esm/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/ko.json b/packages/modal-ui/dist/esm/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/mk.json b/packages/modal-ui/dist/esm/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/sl.json b/packages/modal-ui/dist/esm/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/sr.json b/packages/modal-ui/dist/esm/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/vi.json b/packages/modal-ui/dist/esm/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/locale/zh.json b/packages/modal-ui/dist/esm/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/options.d.ts b/packages/modal-ui/dist/esm/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/options.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/options.js b/packages/modal-ui/dist/esm/core/src/lib/options.js new file mode 100644 index 000000000..fa6b65f26 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/options.js @@ -0,0 +1,40 @@ +import { WebStorageService } from "./services"; +export const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +export const resolveNetwork = (network) => { + return typeof network === "string" ? getNetworkPreset(network) : network; +}; +export const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: resolveNetwork(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new WebStorageService(), + }; +}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/options.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/options.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/options.types.js b/packages/modal-ui/dist/esm/core/src/lib/options.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/options.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..304200d75 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,16 @@ +import { EventEmitter as NEventEmitter } from "events"; +export class EventEmitter { + emitter = new NEventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/index.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/index.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/index.js b/packages/modal-ui/dist/esm/core/src/lib/services/index.js new file mode 100644 index 000000000..5301a0f98 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/index.js @@ -0,0 +1,11 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.js b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..d1ca57bc4 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,32 @@ +export class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +export const logger = new Logger(); diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.types.js b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.js b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..bfcf13b62 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,43 @@ +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +export class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new JsonRpcProvider({ url })) + : []; + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.types.js b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.js b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..a9175d614 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,25 @@ +const KEY_DELIMITER = ":"; +export class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.types.js b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/storage.service.types.js b/packages/modal-ui/dist/esm/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/storage/web-storage.service.js b/packages/modal-ui/dist/esm/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..3b6ee32f5 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,20 @@ +export class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..d5aa498d4 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,321 @@ +import { EventEmitter } from "../event-emitter/event-emitter.service"; +import { Logger, logger } from "../logger/logger.service"; +import { RECENTLY_SIGNED_IN_WALLETS, PACKAGE_NAME, PENDING_CONTRACT, PENDING_SELECTED_WALLET_ID, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "../../constants"; +import { JsonStorage } from "../storage/json-storage.service"; +export class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger.log(`Failed to validate ${wallet.id} during setup`); + logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger.log("Failed to sign out existing wallet"); + logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger.log(`Failed to sign out ${wallet.id}`); + logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new Logger(module.id), + storage: new JsonStorage(this.storage, [PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger.log("Failed to setup module"); + logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger.error("Failed to sign in to wallet. " + err); + } + } + } +} diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/store.d.ts b/packages/modal-ui/dist/esm/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/store.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/store.js b/packages/modal-ui/dist/esm/core/src/lib/store.js new file mode 100644 index 000000000..32dc79078 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/store.js @@ -0,0 +1,154 @@ +import { Subject, BehaviorSubject, scan } from "rxjs"; +import { logger, JsonStorage } from "./services"; +import { PACKAGE_NAME, CONTRACT, SELECTED_WALLET_ID, RECENTLY_SIGNED_IN_WALLETS, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "./constants"; +const reducer = (state, action) => { + logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? REMEMBER_RECENT_WALLETS_STATE.DISABLED + : REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +export const createStore = async (storage) => { + const jsonStorage = new JsonStorage(storage, PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(CONTRACT), + selectedWalletId: await jsonStorage.getItem(SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new BehaviorSubject(initialState); + const actions$ = new Subject(); + actions$.pipe(scan(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, CONTRACT, "contract"); + syncStorage(prevState, state, RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/store.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/store.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/store.types.js b/packages/modal-ui/dist/esm/core/src/lib/store.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/store.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/testUtils.d.ts b/packages/modal-ui/dist/esm/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/testUtils.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/testUtils.js b/packages/modal-ui/dist/esm/core/src/lib/testUtils.js new file mode 100644 index 000000000..7e90e1ce8 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/testUtils.js @@ -0,0 +1,103 @@ +// Remove Jest import +// import * as jest from "jest"; +import { mock } from "jest-mock-extended"; +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, WalletModules } from "./services"; +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +export const mockWallet = async (factory, deps) => { + const { options, storage } = resolveOptions({ + network: getNetworkPreset("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new EventEmitter(); + const store = await createStore(storage); + const walletModules = new WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || mock(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/modal-ui/dist/esm/core/src/lib/translate/translate.d.ts b/packages/modal-ui/dist/esm/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/translate/translate.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/translate/translate.js b/packages/modal-ui/dist/esm/core/src/lib/translate/translate.js new file mode 100644 index 000000000..610c02a94 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/translate/translate.js @@ -0,0 +1,73 @@ +import en from "../locale/en.json"; +import es from "../locale/es.json"; +import zh from "../locale/zh.json"; +import bg from "../locale/bg.json"; +import ko from "../locale/ko.json"; +import vi from "../locale/vi.json"; +import hi from "../locale/hi.json"; +import ar from "../locale/ar.json"; +import hr from "../locale/hr.json"; +import mk from "../locale/mk.json"; +import sl from "../locale/sl.json"; +import sr from "../locale/sr.json"; +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en; + case "es": + return es; + case "zh": + return zh; + case "bg": + return bg; + case "ko": + return ko; + case "vi": + return vi; + case "hi": + return hi; + case "ar": + return ar; + case "hr": + return hr; + case "mk": + return mk; + case "sl": + return sl; + case "sr": + return sr; + default: + return en; + } +}; +let chosenLang; +export const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +export const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/utils.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/utils.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/utils.types.js b/packages/modal-ui/dist/esm/core/src/lib/utils.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/utils.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.d.ts b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.js b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..af67afbb6 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.js @@ -0,0 +1,79 @@ +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, Logger, WalletModules, Provider } from "./services"; +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export const setupWalletSelector = async (params) => { + const { options, storage } = resolveOptions(params); + Logger.debug = options.debug; + const emitter = new EventEmitter(); + const store = await createStore(storage); + const network = await getNetworkPreset(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.types.js b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet-selector.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet/index.d.ts b/packages/modal-ui/dist/esm/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet/index.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet/index.js b/packages/modal-ui/dist/esm/core/src/lib/wallet/index.js new file mode 100644 index 000000000..bd35cba8b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet/index.js @@ -0,0 +1,2 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet/transactions.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet/transactions.types.js b/packages/modal-ui/dist/esm/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet/transactions.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet/wallet.types.d.ts b/packages/modal-ui/dist/esm/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map b/packages/modal-ui/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/core/src/lib/wallet/wallet.types.js b/packages/modal-ui/dist/esm/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/core/src/lib/wallet/wallet.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/index.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/index.d.ts new file mode 100644 index 000000000..f30fecabf --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupModal } from "./lib/modal"; +export type { WalletSelectorModal, ModalOptions, Theme, ModalEvents, } from "./lib/modal.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/index.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/index.d.ts.map new file mode 100644 index 000000000..8a8c34d43 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,WAAW,GACZ,MAAM,mBAAmB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/index.js b/packages/modal-ui/dist/esm/modal-ui/src/index.js new file mode 100644 index 000000000..bb42f29c2 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/index.js @@ -0,0 +1 @@ +export { setupModal } from "./lib/modal"; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/AlertMessage.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/AlertMessage.d.ts new file mode 100644 index 000000000..bc972da8f --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/AlertMessage.d.ts @@ -0,0 +1,11 @@ +import React from "react"; +import type { ModuleState } from "@near-wallet-selector/core"; +interface AlertMessageProps { + message: string; + module?: ModuleState; + onBack: (retry: boolean) => void; + onCloseModal: () => void; +} +export declare const AlertMessage: React.FC; +export {}; +//# sourceMappingURL=AlertMessage.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/AlertMessage.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/AlertMessage.d.ts.map new file mode 100644 index 000000000..4ac62a547 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/AlertMessage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AlertMessage.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/AlertMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2BpD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/AlertMessage.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/AlertMessage.js new file mode 100644 index 000000000..9770820d4 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/AlertMessage.js @@ -0,0 +1,9 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { Fragment } from "react"; +import { ConnectionResult } from "./ConnectionResult"; +import { ModalHeader } from "./ModalHeader"; +export const AlertMessage = ({ message, module, onBack, onCloseModal, }) => { + return (_jsxs(Fragment, { children: [_jsx(ModalHeader, { title: "", onCloseModal: onCloseModal }), _jsx("div", { className: "alert-message connecting-wrapper connecting-wrapper-err", children: _jsxs("div", { className: "content", children: [_jsx("div", { className: "icon", children: _jsx("img", { src: module?.metadata.iconUrl, alt: module?.metadata.name }) }), _jsx("h3", { className: "connecting-name", children: module?.metadata.name }), _jsx(ConnectionResult, { module: module, message: message, err: message !== null, onRetry: () => { + onBack(true); + } })] }) })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/BackArrow.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/BackArrow.d.ts new file mode 100644 index 000000000..a6fd6f022 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/BackArrow.d.ts @@ -0,0 +1,7 @@ +import React from "react"; +interface BackArrowProps { + onClick: () => void; +} +export declare const BackArrow: React.FC; +export {}; +//# sourceMappingURL=BackArrow.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/BackArrow.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/BackArrow.d.ts.map new file mode 100644 index 000000000..c3cd0a168 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/BackArrow.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BackArrow.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/BackArrow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAM9C,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/BackArrow.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/BackArrow.js new file mode 100644 index 000000000..b0fbdfc51 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/BackArrow.js @@ -0,0 +1,5 @@ +import { jsx as _jsx } from "react/jsx-runtime"; +import { BackArrowIcon } from "./icons/BackArrowIcon"; +export const BackArrow = ({ onClick }) => { + return (_jsx("button", { onClick: onClick, className: "back-button", children: _jsx(BackArrowIcon, {}) })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/CloseButton.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/CloseButton.d.ts new file mode 100644 index 000000000..1b1ad978c --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/CloseButton.d.ts @@ -0,0 +1,7 @@ +import React from "react"; +interface CloseButtonProps { + onClick: () => void; +} +export declare const CloseButton: React.FC; +export {}; +//# sourceMappingURL=CloseButton.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/CloseButton.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/CloseButton.d.ts.map new file mode 100644 index 000000000..fe4c45e1b --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/CloseButton.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CloseButton.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/CloseButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAMlD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/CloseButton.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/CloseButton.js new file mode 100644 index 000000000..333f700bc --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/CloseButton.js @@ -0,0 +1,5 @@ +import { jsx as _jsx } from "react/jsx-runtime"; +import { CloseIcon } from "./icons/CloseIcon"; +export const CloseButton = ({ onClick }) => { + return (_jsx("button", { onClick: onClick, className: "close-button", children: _jsx(CloseIcon, {}) })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ConnectionResult.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ConnectionResult.d.ts new file mode 100644 index 000000000..1a688d8fe --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ConnectionResult.d.ts @@ -0,0 +1,11 @@ +import React from "react"; +import type { ModuleState } from "@near-wallet-selector/core"; +interface ConnectionResultProps { + module: ModuleState; + message: string; + err: boolean; + onRetry: () => void; +} +export declare const ConnectionResult: React.FC; +export {}; +//# sourceMappingURL=ConnectionResult.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ConnectionResult.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ConnectionResult.d.ts.map new file mode 100644 index 000000000..deb52314e --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ConnectionResult.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionResult.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ConnectionResult.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAK9D,UAAU,qBAAqB;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA2B5D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ConnectionResult.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ConnectionResult.js new file mode 100644 index 000000000..984ca83fa --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ConnectionResult.js @@ -0,0 +1,7 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { translate } from "@near-wallet-selector/core"; +import { ConnectionErrorIcon } from "./icons/ConnectionErrorIcon"; +import { ConnectionSuccessIcon } from "./icons/ConnectionSuccessIcon"; +export const ConnectionResult = ({ module, message, err, onRetry, }) => { + return (_jsx("div", { className: "connection connecting-details", children: err ? (_jsxs("div", { className: "error-wrapper", children: [_jsxs("div", { className: "error", children: [_jsx(ConnectionErrorIcon, {}), translate("modal.wallet.connectionFailed")] }), _jsx("p", { children: message }), module?.metadata.available && (_jsx("button", { onClick: onRetry, children: translate("modal.ledger.retry") }))] })) : (_jsxs("div", { className: "success", children: [_jsx(ConnectionSuccessIcon, {}), translate("modal.wallet.connectionSuccessful")] })) })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/DerivationPath.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/DerivationPath.d.ts new file mode 100644 index 000000000..89f5be668 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/DerivationPath.d.ts @@ -0,0 +1,20 @@ +import React from "react"; +import type { HardwareWalletAccount, Wallet, WalletSelector } from "@near-wallet-selector/core"; +import type { ModalOptions } from "../modal.types"; +import type { DerivationPathModalRouteParams } from "./Modal.types"; +interface DerivationPathProps { + selector: WalletSelector; + options: ModalOptions; + onBack: () => void; + onConnected: () => void; + params: DerivationPathModalRouteParams; + onError: (message: string, wallet: Wallet) => void; + onCloseModal: () => void; +} +export type HardwareWalletAccountState = HardwareWalletAccount & { + selected: boolean; +}; +export type HardwareRoutes = "EnterDerivationPath" | "SpecifyHDPath" | "NoAccountsFound" | "ChooseAccount" | "AddCustomAccountId" | "OverviewAccounts"; +export declare const DerivationPath: React.FC; +export {}; +//# sourceMappingURL=DerivationPath.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/DerivationPath.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/DerivationPath.d.ts.map new file mode 100644 index 000000000..94da5efbd --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/DerivationPath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DerivationPath.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/DerivationPath.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAEV,qBAAqB,EACrB,MAAM,EACN,cAAc,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAUpE,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,EAAE,8BAA8B,CAAC;IACvC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC/D,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,oBAAoB,GACpB,kBAAkB,CAAC;AAIvB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAgZxD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/DerivationPath.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/DerivationPath.js new file mode 100644 index 000000000..719d346f7 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/DerivationPath.js @@ -0,0 +1,203 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { Fragment, useState } from "react"; +import HardwareWalletAccountsForm from "./HardwareWalletAccountsForm"; +import { WalletConnecting } from "./WalletConnecting"; +import { ModalHeader } from "./ModalHeader"; +import { BackArrow } from "./BackArrow"; +import { LedgerDeviceIcon } from "./icons/LedgerDeviceIcon"; +import { translate } from "@near-wallet-selector/core"; +import { UpArrowIcon } from "./icons/UpArrowIcon"; +import { DownArrowIcon } from "./icons/DownArrowIcon"; +const DEFAULT_DERIVATION_PATH = "44'/397'/0'/0'/1'"; +export const DerivationPath = ({ selector, options, onBack, onConnected, params, onError, onCloseModal, }) => { + const [route, setRoute] = useState("EnterDerivationPath"); + const [derivationPath, setDerivationPath] = useState(DEFAULT_DERIVATION_PATH); + const [customDerivationPath, setCustomDerivationPath] = useState(1); + const [accounts, setAccounts] = useState([]); + const [selectedAccounts, setSelectedAccounts] = useState([]); + const [hardwareWallet, setHardwareWallet] = useState(); + const [customAccountId, setCustomAccountId] = useState(""); + const [connecting, setConnecting] = useState(false); + const initalHeaderTitle = translate("modal.ledger.connectWithLedger"); + const [headerTitle, setHeaderTitle] = useState(initalHeaderTitle); + const getAccountIds = async (publicKey) => { + const response = await fetch(`${selector.options.network.indexerUrl}/publicKey/ed25519:${publicKey}/accounts`); + if (!response.ok) { + throw new Error("Failed to get account id from public key"); + } + const accountIds = await response.json(); + if (!Array.isArray(accountIds) || !accountIds.length) { + return []; + } + return accountIds; + }; + const resolveAccounts = async (wallet) => { + const publicKey = await wallet.getPublicKey(derivationPath); + try { + const accountIds = await getAccountIds(publicKey); + return accountIds.map((accountId, index) => { + return { + derivationPath, + publicKey, + accountId, + selected: index === 0, + }; + }); + } + catch (e) { + return null; + } + }; + const handleValidateAccount = async () => { + const wallet = await selector.wallet(params.walletId); + if (wallet.type !== "hardware") { + return; + } + setConnecting(true); + setHardwareWallet(wallet); + try { + const resolvedAccounts = await resolveAccounts(wallet); + if (!resolvedAccounts) { + setRoute("AddCustomAccountId"); + return; + } + const noAccounts = resolvedAccounts.length === 0; + const multipleAccounts = resolvedAccounts.length > 1; + if (noAccounts) { + setHeaderTitle(translate("modal.ledger.noAccountsFound")); + setRoute("NoAccountsFound"); + return; + } + setAccounts(resolvedAccounts); + if (!multipleAccounts) { + setSelectedAccounts(resolvedAccounts); + setRoute("OverviewAccounts"); + } + else { + setHeaderTitle(translate("modal.ledger.selectYourAccounts")); + setRoute("ChooseAccount"); + } + } + catch (err) { + setConnecting(false); + const message = err && typeof err === "object" && "message" in err + ? err.message + : "Something went wrong"; + onError(message, wallet); + } + finally { + setConnecting(false); + } + }; + const handleAddCustomAccountId = async () => { + try { + setConnecting(true); + const publicKey = await hardwareWallet.getPublicKey(derivationPath); + const accountList = [ + { + derivationPath: derivationPath, + publicKey, + accountId: customAccountId, + selected: true, + }, + ]; + setAccounts(accountList); + setSelectedAccounts(accountList); + setHeaderTitle(translate("modal.ledger.connecting1Account")); + setRoute("OverviewAccounts"); + } + catch (err) { + setConnecting(false); + const message = err && typeof err === "object" && "message" in err + ? err.message + : "Something went wrong"; + onError(message, hardwareWallet); + } + finally { + setConnecting(false); + } + }; + const handleSignIn = () => { + const mapAccounts = selectedAccounts.map((account) => { + return { + derivationPath: account.derivationPath, + publicKey: account.publicKey, + accountId: account.accountId, + }; + }); + return hardwareWallet + .signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + accounts: mapAccounts, + }) + .then(() => onConnected()) + .catch((err) => { + onError(`Error: ${err.message}`, hardwareWallet); + }); + }; + const handleOnBackButtonClick = () => { + if (route === "SpecifyHDPath" || + route === "NoAccountsFound" || + route === "ChooseAccount") { + setHeaderTitle(translate("modal.ledger.connectWithLedger")); + setRoute("EnterDerivationPath"); + } + if (route === "OverviewAccounts") { + setHeaderTitle(translate("modal.ledger.selectYourAccounts")); + setRoute("ChooseAccount"); + } + }; + if (connecting) { + return (_jsx("div", { className: "derivation-path-wrapper", children: _jsx(WalletConnecting, { wallet: hardwareWallet, onBack: () => { + setConnecting(false); + }, onCloseModal: onCloseModal }) })); + } + return (_jsxs(Fragment, { children: [_jsxs("div", { className: "nws-modal-header-wrapper", children: [(route === "SpecifyHDPath" || + route === "NoAccountsFound" || + route === "ChooseAccount" || + route === "OverviewAccounts") && (_jsx(BackArrow, { onClick: handleOnBackButtonClick })), _jsx(ModalHeader, { title: headerTitle, onCloseModal: onCloseModal })] }), _jsxs("div", { className: "derivation-path-wrapper", children: [route === "EnterDerivationPath" && (_jsxs("div", { className: "enter-derivation-path", children: [_jsx("div", { className: "ledger-image", children: _jsx(LedgerDeviceIcon, {}) }), _jsxs("div", { className: "ledger-description", children: [_jsx("p", { children: translate("modal.ledger.makeSureYourLedger") }), _jsx("p", { className: "specify-path", onClick: () => { + setHeaderTitle(translate("modal.ledger.specifyHDPath")); + setRoute("SpecifyHDPath"); + }, children: translate("modal.ledger.specifyHDPath") })] }), _jsx("div", { className: "action-buttons", children: _jsx("button", { className: "middleButton", onClick: handleValidateAccount, children: translate("modal.ledger.continue") }) })] })), route === "SpecifyHDPath" && (_jsxs("div", { className: "specify-path-wrapper", children: [_jsxs("div", { className: "change-path-wrapper", children: [_jsx("div", { className: "display-path", children: _jsx("span", { children: derivationPath.slice(0, -2) }) }), _jsxs("div", { className: "change-path", children: [_jsx("div", { className: "path-value", children: _jsx("span", { children: customDerivationPath }) }), _jsxs("div", { className: "buttons-wrapper", children: [_jsx("button", { onClick: () => { + const newValue = customDerivationPath + 1; + const path = derivationPath.slice(0, -2); + setDerivationPath(`${path}${newValue}'`); + setCustomDerivationPath(newValue); + }, children: _jsx(UpArrowIcon, {}) }), _jsx("button", { onClick: () => { + const newValue = customDerivationPath - 1; + if (newValue < 0) { + return; + } + const path = derivationPath.slice(0, -2); + setDerivationPath(`${path}${newValue}'`); + setCustomDerivationPath(newValue); + }, children: _jsx(DownArrowIcon, {}) })] })] })] }), _jsx("p", { className: "path-description", children: translate("modal.ledger.enterYourPreferredHDPath") }), _jsx("p", { className: "what-link", children: _jsx("a", { href: "https://www.ledger.com/academy/crypto/what-are-hierarchical-deterministic-hd-wallets", target: "_blank", children: "What's this?" }) }), _jsx("div", { className: "action-buttons", children: _jsx("button", { className: "middleButton", onClick: handleValidateAccount, children: translate("modal.ledger.scan") }) })] })), route === "NoAccountsFound" && (_jsx("div", { className: "no-accounts-found-wrapper", children: _jsxs("p", { children: [translate("modal.ledger.cantFindAnyAccount"), " ", _jsx("a", { href: `https://${selector.options.network.networkId === "testnet" + ? "testnet" + : "app"}.mynearwallet.com/create`, target: "_blank", children: "MyNearWallet" }), " ", translate("modal.ledger.orConnectAnAnotherLedger")] }) })), route === "ChooseAccount" && (_jsx(HardwareWalletAccountsForm, { accounts: accounts, onSelectedChanged: (index, selected) => { + setAccounts((prevAccounts) => { + const updateAccounts = prevAccounts.map((account, idx) => { + const selectedValue = index === idx ? selected : account.selected; + return { + ...account, + selected: selectedValue, + }; + }); + return [...updateAccounts]; + }); + }, onSubmit: (acc, e) => { + e.preventDefault(); + const selectedAcc = acc.filter((account) => account.selected); + setSelectedAccounts(selectedAcc); + const numberOfAccounts = selectedAcc.length; + setHeaderTitle(`${translate("modal.ledger.connecting")} ${numberOfAccounts} ${translate("modal.ledger.ofAccounts")}`); + setRoute("OverviewAccounts"); + }, onChangeRoute: (newRoute) => { + if (newRoute === "SpecifyHDPath") { + setHeaderTitle(translate("modal.ledger.specifyHDPath")); + } + setRoute(newRoute); + } })), route === "AddCustomAccountId" && (_jsxs("div", { className: "enter-custom-account", children: [_jsx("p", { children: translate("modal.ledger.failedToAutomatically") }), _jsx("div", { className: "input-wrapper", children: _jsx("input", { type: "text", placeholder: "Account ID", value: customAccountId, onChange: (e) => { + setCustomAccountId(e.target.value); + } }) }), _jsx("div", { className: "action-buttons", children: _jsx("button", { className: "middleButton", onClick: handleAddCustomAccountId, children: translate("ledger.Continue") }) })] })), route === "OverviewAccounts" && (_jsxs("div", { className: "overview-wrapper", children: [_jsx("p", { children: translate("modal.ledger.overviewTheListOfAuthorized") }), _jsx("div", { className: "accounts", children: selectedAccounts.map((account, index) => (_jsx("div", { children: _jsx("div", { className: "account", children: _jsx("span", { children: account.accountId }) }) }, account.accountId))) }), _jsx("div", { className: "action-buttons", children: _jsx("button", { className: "middleButton", onClick: handleSignIn, disabled: accounts.length === 0, children: translate("modal.ledger.finish") }) })] }))] })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts new file mode 100644 index 000000000..514cc73c9 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts @@ -0,0 +1,11 @@ +import React from "react"; +import type { HardwareRoutes, HardwareWalletAccountState } from "./DerivationPath"; +interface FormProps { + accounts: Array; + onSelectedChanged: (index: number, selected: boolean) => void; + onSubmit: (accounts: Array, e: React.FormEvent) => void; + onChangeRoute: (route: HardwareRoutes) => void; +} +declare const HardwareWalletAccountsForm: React.FC; +export default HardwareWalletAccountsForm; +//# sourceMappingURL=HardwareWalletAccountsForm.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts.map new file mode 100644 index 000000000..97295f250 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/HardwareWalletAccountsForm.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HardwareWalletAccountsForm.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/HardwareWalletAccountsForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EACV,cAAc,EACd,0BAA0B,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,UAAU,SAAS;IACjB,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC5C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,QAAQ,EAAE,CACR,QAAQ,EAAE,KAAK,CAAC,0BAA0B,CAAC,EAC3C,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KAChC,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAChD;AAED,QAAA,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA4DnD,CAAC;AAEF,eAAe,0BAA0B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/HardwareWalletAccountsForm.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/HardwareWalletAccountsForm.js new file mode 100644 index 000000000..8daaf3592 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/HardwareWalletAccountsForm.js @@ -0,0 +1,11 @@ +import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime"; +const HardwareWalletAccountsForm = ({ accounts, onSelectedChanged, onSubmit, onChangeRoute, }) => { + return (_jsxs("div", { className: "choose-ledger-account-form-wrapper", children: [_jsxs("p", { children: ["We found ", accounts.length, " accounts on your device. Select the account(s) you wish to connect."] }), _jsx("div", { className: "button-wrapper", children: _jsx("button", { onClick: () => { + onChangeRoute("SpecifyHDPath"); + }, children: "HD.../0" }) }), _jsx("form", { className: "form", onSubmit: (e) => { + onSubmit(accounts, e); + }, children: _jsxs("div", { children: [_jsx("div", { className: "nws-form-control", children: accounts.map((account, index) => (_jsxs("div", { className: "account", children: [_jsx("input", { onChange: (e) => { + onSelectedChanged(index, e.target.checked); + }, checked: account.selected, type: "checkbox", id: account.accountId, name: account.accountId, value: account.accountId }), _jsxs("label", { htmlFor: account.accountId, children: [" ", account.accountId] }), _jsx("br", {})] }, index))) }), _jsx("div", { className: "action-buttons", children: _jsx("button", { className: "middleButton", type: "submit", disabled: !accounts.some((x) => x.selected), children: "Connect" }) })] }) })] })); +}; +export default HardwareWalletAccountsForm; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/LanguageSelector.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/LanguageSelector.d.ts new file mode 100644 index 000000000..b305a6e2d --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/LanguageSelector.d.ts @@ -0,0 +1,7 @@ +import React from "react"; +interface LanguageSelectorProps { + changeLanguage: (e: React.ChangeEvent) => void; +} +export declare const LanguageSelector: React.FC; +export {}; +//# sourceMappingURL=LanguageSelector.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/LanguageSelector.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/LanguageSelector.d.ts.map new file mode 100644 index 000000000..dec34fc3c --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/LanguageSelector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LanguageSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/LanguageSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,qBAAqB;IAC7B,cAAc,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAClE;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoB5D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/LanguageSelector.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/LanguageSelector.js new file mode 100644 index 000000000..6b9d2b608 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/LanguageSelector.js @@ -0,0 +1,8 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const LanguageSelector = ({ changeLanguage, }) => { + return (_jsxs("div", { style: { + background: "aliceblue", + position: "fixed", + top: 0, + }, onChange: changeLanguage, children: [_jsx("input", { type: "radio", value: "en", name: "language", defaultChecked: true }), " English", _jsx("input", { type: "radio", value: "es", name: "language" }), " Spanish", _jsx("input", { type: "radio", value: "fr", name: "language" }), " French", _jsx("input", { type: "radio", value: "de", name: "language" }), " German", _jsx("input", { type: "radio", value: "bg", name: "language" }), " Bulgarian", _jsx("input", { type: "radio", value: "ko", name: "language" }), " Korean"] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.d.ts new file mode 100644 index 000000000..785aba83c --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.d.ts @@ -0,0 +1,13 @@ +import React from "react"; +import type { EventEmitterService, WalletSelector } from "@near-wallet-selector/core"; +import type { ModalEvents, ModalOptions } from "../modal.types"; +interface ModalProps { + selector: WalletSelector; + options: ModalOptions; + visible: boolean; + hide: () => void; + emitter: EventEmitterService; +} +export declare const Modal: React.FC; +export {}; +//# sourceMappingURL=Modal.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.d.ts.map new file mode 100644 index 000000000..758766717 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EACV,mBAAmB,EAEnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,WAAW,EAEX,YAAY,EAEb,MAAM,gBAAgB,CAAC;AAcxB,UAAU,UAAU;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC3C;AAaD,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAoXtC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.js new file mode 100644 index 000000000..739237de0 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.js @@ -0,0 +1,227 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { useCallback, useEffect, useState } from "react"; +import { WalletNetworkChanged } from "./WalletNetworkChanged"; +import { WalletOptions } from "./WalletOptions"; +import { AlertMessage } from "./AlertMessage"; +import { DerivationPath } from "./DerivationPath"; +import { WalletConnecting } from "./WalletConnecting"; +import { WalletNotInstalled } from "./WalletNotInstalled"; +import { WalletHome } from "./WalletHome"; +import { WalletConnected } from "./WalletConnected"; +import { ScanQRCode } from "./ScanQRCode"; +import { translate, allowOnlyLanguage } from "@near-wallet-selector/core"; +const getThemeClass = (theme) => { + switch (theme) { + case "dark": + return "dark-theme"; + case "light": + return "light-theme"; + default: + return ""; + } +}; +export const Modal = ({ selector, options, visible, hide, emitter, }) => { + const [route, setRoute] = useState({ + name: "WalletHome", + }); + const [alertMessage, setAlertMessage] = useState(null); + const [selectedWallet, setSelectedWallet] = useState(); + const [bridgeWalletUri, setBridgeWalletUri] = useState(); + const { rememberRecentWallets } = selector.store.getState(); + const [isChecked, setIsChecked] = useState(rememberRecentWallets === "enabled"); + const handleSwitchChange = () => { + setIsChecked((prevIsChecked) => !prevIsChecked); + selector.setRememberRecentWallets(); + }; + useEffect(() => { + setRoute({ + name: "WalletHome", + }); + allowOnlyLanguage(selector.options.languageCode); + const { selectedWalletId, modules } = selector.store.getState(); + if (selectedWalletId) { + const module = modules.find((m) => m.id === selectedWalletId); + setSelectedWallet(module); + setRoute({ + name: "WalletConnected", + params: { + module, + }, + }); + } + setBridgeWalletUri(""); + // eslint-disable-next-line + }, [visible]); + useEffect(() => { + const subscription = selector.on("networkChanged", ({ networkId }) => { + // Switched back to the correct network. + if (networkId === selector.options.network.networkId) { + return handleDismissClick({}); + } + setRoute({ + name: "WalletNetworkChanged", + }); + }); + return () => subscription.remove(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const handleDismissClick = useCallback(({ hideReason }) => { + setAlertMessage(null); + setRoute({ + name: "WalletHome", + }); + if (hideReason === "user-triggered") { + emitter.emit("onHide", { hideReason }); + } + if (hideReason === "wallet-navigation") { + emitter.emit("onHide", { hideReason }); + } + hide(); + }, [hide, emitter]); + useEffect(() => { + const close = (e) => { + if (e.key === "Escape") { + handleDismissClick({ hideReason: "user-triggered" }); + } + }; + window.addEventListener("keydown", close); + return () => window.removeEventListener("keydown", close); + }, [handleDismissClick]); + const handleWalletClick = async (module, qrCodeModal) => { + setSelectedWallet(module); + const { selectedWalletId } = selector.store.getState(); + if (selectedWalletId === module.id) { + setRoute({ + name: "WalletConnected", + params: { + module, + }, + }); + return; + } + try { + const { deprecated, available } = module.metadata; + if (module.type === "injected" && !available) { + setRoute({ + name: "WalletNotInstalled", + params: { module: module }, + }); + return; + } + const wallet = await module.wallet(); + if (deprecated) { + setAlertMessage(`${module.metadata.name} is deprecated. Please select another wallet.`); + setRoute({ + name: "AlertMessage", + params: { + module: module, + }, + }); + return; + } + if (wallet.type === "hardware") { + setRoute({ + name: "DerivationPath", + params: { + walletId: wallet.id || "ledger", + }, + }); + return; + } + setRoute({ + name: "WalletConnecting", + params: { wallet: wallet }, + }); + if (wallet.type === "bridge") { + const subscription = selector.on("uriChanged", ({ uri }) => { + setBridgeWalletUri(uri); + setRoute({ + name: "ScanQRCode", + params: { + uri, + wallet, + }, + }); + }); + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + qrCodeModal, + }); + subscription.remove(); + handleDismissClick({ hideReason: "wallet-navigation" }); + return; + } + if (wallet.type === "browser") { + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + successUrl: wallet.metadata.successUrl, + failureUrl: wallet.metadata.failureUrl, + }); + handleDismissClick({ hideReason: "wallet-navigation" }); + return; + } + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + }); + handleDismissClick({ hideReason: "wallet-navigation" }); + } + catch (err) { + const { name } = module.metadata; + const message = err && typeof err === "object" && "message" in err + ? err.message + : "Something went wrong"; + setAlertMessage(`Failed to sign in with ${name}: ${message}`); + setRoute({ + name: "AlertMessage", + params: { + module: module, + }, + }); + } + }; + if (!visible) { + return null; + } + return (_jsxs("div", { className: `nws-modal-wrapper ${getThemeClass(options?.theme)} ${visible ? "open" : ""}`, children: [_jsx("div", { className: "nws-modal-overlay", onClick: () => { + handleDismissClick({ hideReason: "user-triggered" }); + } }), _jsxs("div", { className: "nws-modal", children: [_jsxs("div", { className: "modal-left", children: [_jsxs("div", { className: "modal-left-title", children: [_jsx("h2", { children: translate("modal.wallet.connectYourWallet") }), _jsx("span", { className: "nws-remember-wallet", children: translate("modal.wallet.rememberWallet") }), _jsxs("label", { className: "nws-switch", children: [_jsx("input", { type: "checkbox", checked: isChecked, onChange: handleSwitchChange }), _jsx("span", { className: "nws-slider round" })] })] }), _jsx(WalletOptions, { handleWalletClick: (module) => { + handleWalletClick(module, false); + }, selector: selector })] }), _jsx("div", { className: "modal-right", children: _jsxs("div", { className: "nws-modal-body", children: [route.name === "AlertMessage" && alertMessage && (_jsx(AlertMessage, { message: alertMessage, module: route.params?.module, onBack: (retry) => { + if (retry) { + handleWalletClick(selectedWallet, false); + } + setAlertMessage(null); + setRoute({ + name: "WalletHome", + }); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "DerivationPath" && (_jsx(DerivationPath, { selector: selector, options: options, onConnected: () => { + handleDismissClick({ hideReason: "wallet-navigation" }); + }, params: route.params, onBack: () => setRoute({ + name: "WalletHome", + }), onError: (message, wallet) => { + const { modules } = selector.store.getState(); + const findModule = modules.find((module) => module.id === wallet.id); + setAlertMessage(message); + setRoute({ + name: "AlertMessage", + params: { + module: findModule, + }, + }); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletNetworkChanged" && (_jsx(WalletNetworkChanged, { selector: selector, onBack: () => setRoute({ + name: "WalletHome", + }), onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletNotInstalled" && (_jsx(WalletNotInstalled, { module: route.params?.module, onBack: () => { + setRoute({ + name: "WalletHome", + }); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletConnecting" && (_jsx(WalletConnecting, { wallet: route.params?.wallet, onBack: () => { + setRoute({ + name: "WalletHome", + }); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletHome" && (_jsx(WalletHome, { selector: selector, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "WalletConnected" && (_jsx(WalletConnected, { module: selectedWallet, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }) })), route.name === "ScanQRCode" && (_jsx(ScanQRCode, { handleOpenDefaultModal: () => { + handleWalletClick(selectedWallet, true); + }, onCloseModal: () => handleDismissClick({ hideReason: "user-triggered" }), uri: bridgeWalletUri, wallet: selectedWallet }))] }) })] })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.types.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.types.d.ts new file mode 100644 index 000000000..4f783cd07 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.types.d.ts @@ -0,0 +1,65 @@ +import type { Wallet } from "@near-wallet-selector/core"; +import type { ModuleState } from "@near-wallet-selector/core"; +type AlertMessageModalRouteParams = { + module: ModuleState; +}; +type WalletOptionsModalRouteParams = { + wallet: Wallet; +}; +export type DerivationPathModalRouteParams = { + walletId: string; +}; +type WalletNotInstalledModalRouteParams = { + module: ModuleState; +}; +type WalletNetworkChangedModalRouteParams = { + wallet: Wallet; +}; +type WalletConnectingModalRouteParams = { + wallet: Wallet; +}; +type WalletConnectedParams = { + module: ModuleState | undefined; +}; +type ScanQRCodeParams = { + wallet: Wallet; + uri: string | undefined; +}; +type AlertMessageModalRoute = { + name: "AlertMessage"; + params?: AlertMessageModalRouteParams; +}; +type WalletOptionsModalRoute = { + name: "WalletOptions"; + params?: WalletOptionsModalRouteParams; +}; +type DerivationPathModalRoute = { + name: "DerivationPath"; + params: DerivationPathModalRouteParams; +}; +type WalletNotInstalledModalRoute = { + name: "WalletNotInstalled"; + params?: WalletNotInstalledModalRouteParams; +}; +type WalletNetworkChangedModalRoute = { + name: "WalletNetworkChanged"; + params?: WalletNetworkChangedModalRouteParams; +}; +type WalletConnectingModalRoute = { + name: "WalletConnecting"; + params?: WalletConnectingModalRouteParams; +}; +type WalletHome = { + name: "WalletHome"; +}; +type WalletConnected = { + name: "WalletConnected"; + params?: WalletConnectedParams; +}; +type ScanQRCode = { + name: "ScanQRCode"; + params?: ScanQRCodeParams; +}; +export type ModalRoute = AlertMessageModalRoute | WalletOptionsModalRoute | DerivationPathModalRoute | WalletNotInstalledModalRoute | WalletNetworkChangedModalRoute | WalletConnectingModalRoute | WalletHome | WalletConnected | ScanQRCode; +export {}; +//# sourceMappingURL=Modal.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.types.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.types.d.ts.map new file mode 100644 index 000000000..a81b996c3 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Modal.types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/Modal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,KAAK,4BAA4B,GAAG;IAClC,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,KAAK,oCAAoC,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,4BAA4B,CAAC;CACvC,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,CAAC,EAAE,6BAA6B,CAAC;CACxC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,8BAA8B,CAAC;CACxC,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,CAAC,EAAE,kCAAkC,CAAC;CAC7C,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,CAAC,EAAE,oCAAoC,CAAC;CAC/C,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,CAAC,EAAE,gCAAgC,CAAC;CAC3C,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,sBAAsB,GACtB,uBAAuB,GACvB,wBAAwB,GACxB,4BAA4B,GAC5B,8BAA8B,GAC9B,0BAA0B,GAC1B,UAAU,GACV,eAAe,GACf,UAAU,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.types.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/Modal.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ModalHeader.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ModalHeader.d.ts new file mode 100644 index 000000000..74e7c6d2e --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ModalHeader.d.ts @@ -0,0 +1,8 @@ +import React from "react"; +interface ModalHeaderProps { + title: string; + onCloseModal: () => void; +} +export declare const ModalHeader: React.FC; +export {}; +//# sourceMappingURL=ModalHeader.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ModalHeader.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ModalHeader.d.ts.map new file mode 100644 index 000000000..8eab4a2a1 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ModalHeader.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ModalHeader.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ModalHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAWlD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ModalHeader.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ModalHeader.js new file mode 100644 index 000000000..9ee284e65 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ModalHeader.js @@ -0,0 +1,6 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { CloseButton } from "./CloseButton"; +export const ModalHeader = ({ title, onCloseModal, }) => { + const additionalClasses = title === "Get a Wallet" ? " -open" : ""; + return (_jsxs("div", { className: "nws-modal-header", children: [_jsx("h3", { className: `middleTitle ${additionalClasses}`, children: title }), _jsx(CloseButton, { onClick: onCloseModal })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ScanQRCode.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ScanQRCode.d.ts new file mode 100644 index 000000000..78e2cf0f0 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ScanQRCode.d.ts @@ -0,0 +1,11 @@ +import React from "react"; +import type { ModuleState, Wallet } from "@near-wallet-selector/core"; +interface ScanQRCodeProps { + wallet: ModuleState; + uri?: string; + onCloseModal: () => void; + handleOpenDefaultModal?: () => void; +} +export declare const ScanQRCode: React.FC; +export {}; +//# sourceMappingURL=ScanQRCode.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ScanQRCode.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ScanQRCode.d.ts.map new file mode 100644 index 000000000..c28aa43a4 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ScanQRCode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ScanQRCode.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/ScanQRCode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEtE,UAAU,eAAe;IACvB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACrC;AAMD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA2DhD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ScanQRCode.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ScanQRCode.js new file mode 100644 index 000000000..f7e2c41e1 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/ScanQRCode.js @@ -0,0 +1,36 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import React from "react"; +import QRCode from "qrcode"; +import copy from "copy-to-clipboard"; +import { ModalHeader } from "./ModalHeader"; +import { CopyIcon } from "./icons/CopyIcon"; +import { translate } from "@near-wallet-selector/core"; +async function formatQRCodeImage(data) { + return await QRCode.toString(data, { margin: 0, type: "svg" }); +} +export const ScanQRCode = ({ wallet, uri, onCloseModal, handleOpenDefaultModal, }) => { + const [notification, setNotification] = React.useState(""); + const [svg, setSvg] = React.useState(""); + const copyToClipboard = () => { + if (!uri) { + return; + } + const success = copy(uri); + if (success) { + setNotification(translate("modal.qr.copiedToClipboard")); + setTimeout(() => setNotification(""), 1200); + } + else { + setNotification(translate("modal.qr.failedToCopy")); + setTimeout(() => setNotification(""), 1200); + } + }; + React.useEffect(() => { + (async () => { + if (uri) { + setSvg(await formatQRCodeImage(uri)); + } + })(); + }, [uri]); + return (_jsxs("section", { className: "scan-qr-code", children: [_jsx(ModalHeader, { title: translate("modal.qr.scanWithYourMobile"), onCloseModal: onCloseModal }), _jsxs("section", { className: "qr-code", children: [_jsx("div", { dangerouslySetInnerHTML: { __html: svg } }), notification ? (_jsx("div", { className: "notification", children: notification })) : (_jsxs("div", { className: "copy-btn", onClick: copyToClipboard, children: [_jsx(CopyIcon, {}), translate("modal.qr.copyToClipboard")] }))] }), _jsxs("footer", { className: "footer", children: [_jsxs("p", { children: [translate("modal.qr.preferTheOfficial"), " ", wallet.metadata.name, "?"] }), _jsx("button", { className: "btn", onClick: handleOpenDefaultModal, children: translate("modal.qr.open") })] })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnected.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnected.d.ts new file mode 100644 index 000000000..377beacc1 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnected.d.ts @@ -0,0 +1,9 @@ +import React from "react"; +import type { ModuleState } from "@near-wallet-selector/core"; +interface WalletConnectedProps { + module: ModuleState; + onCloseModal: () => void; +} +export declare const WalletConnected: React.FC; +export {}; +//# sourceMappingURL=WalletConnected.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnected.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnected.d.ts.map new file mode 100644 index 000000000..318beb3ce --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnected.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletConnected.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletConnected.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAK9D,UAAU,oBAAoB;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAyB1D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnected.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnected.js new file mode 100644 index 000000000..795933083 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnected.js @@ -0,0 +1,8 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { Fragment } from "react"; +import { CloseButton } from "./CloseButton"; +import { translate } from "@near-wallet-selector/core"; +import { ConnectionSuccessIcon } from "./icons/ConnectionSuccessIcon"; +export const WalletConnected = ({ module, onCloseModal, }) => { + return (_jsxs(Fragment, { children: [_jsxs("div", { className: "nws-modal-header", children: [_jsx("h3", { className: "middleTitle", children: `` }), _jsx(CloseButton, { onClick: onCloseModal })] }), _jsx("div", { className: "connecting-wrapper", children: _jsxs("div", { className: "content", children: [_jsxs("div", { className: "icon", children: [_jsx("div", { className: "green-dot" }), _jsx("img", { src: module?.metadata.iconUrl, alt: module?.metadata.name })] }), _jsx("h3", { className: "connecting-name", children: module?.metadata.name }), _jsxs("div", { className: "wallet-connected-success", children: [_jsx(ConnectionSuccessIcon, {}), _jsx("span", { children: translate("modal.wallet.connectionSuccessful") })] })] }) })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnecting.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnecting.d.ts new file mode 100644 index 000000000..769887bad --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnecting.d.ts @@ -0,0 +1,10 @@ +import React from "react"; +import type { Wallet } from "@near-wallet-selector/core"; +interface WalletConnectingProps { + wallet: Wallet | undefined; + onBack: () => void; + onCloseModal: () => void; +} +export declare const WalletConnecting: React.FC; +export {}; +//# sourceMappingURL=WalletConnecting.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnecting.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnecting.d.ts.map new file mode 100644 index 000000000..316eabd23 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnecting.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletConnecting.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletConnecting.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMzD,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+B5D,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnecting.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnecting.js new file mode 100644 index 000000000..c730ca253 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletConnecting.js @@ -0,0 +1,9 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { Fragment } from "react"; +// import LoadingIcon from "../images/connecting-loader.png"; +const loadingIcon = require("../images/connecting-loader.png"); +import { ModalHeader } from "./ModalHeader"; +import { translate } from "@near-wallet-selector/core"; +export const WalletConnecting = ({ wallet, onCloseModal, }) => { + return (_jsxs(Fragment, { children: [_jsx(ModalHeader, { title: "", onCloseModal: onCloseModal }), _jsx("div", { className: "connecting-wrapper", children: _jsxs("div", { className: "content", children: [_jsx("div", { className: "icon", children: _jsx("img", { src: wallet?.metadata.iconUrl, alt: wallet?.metadata.name }) }), _jsx("h3", { className: "connecting-name", children: wallet?.metadata.name }), _jsxs("div", { className: "connecting-details", children: [_jsx("div", { className: "spinner", children: _jsx("img", { src: loadingIcon, alt: "loading-icon" }) }), _jsxs("span", { children: [translate("modal.wallet.connectingTo"), " ", wallet?.metadata.name, "..."] })] }), _jsx("div", { className: "connecting-message", children: _jsx("span", { children: translate(`modal.wallet.connectingMessage.${wallet?.type}`) }) })] }) })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletHome.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletHome.d.ts new file mode 100644 index 000000000..51af4c7c7 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletHome.d.ts @@ -0,0 +1,9 @@ +import React from "react"; +import type { WalletSelector } from "@near-wallet-selector/core"; +interface WalletHomeProps { + selector: WalletSelector; + onCloseModal: () => void; +} +export declare const WalletHome: React.FC; +export {}; +//# sourceMappingURL=WalletHome.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletHome.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletHome.d.ts.map new file mode 100644 index 000000000..f2d8b2936 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletHome.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletHome.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletHome.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,4BAA4B,CAAC;AASpC,UAAU,eAAe;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAID,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqJhD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletHome.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletHome.js new file mode 100644 index 000000000..b4f6e1a9c --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletHome.js @@ -0,0 +1,55 @@ +import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime"; +import { useEffect, useState } from "react"; +import { ModalHeader } from "./ModalHeader"; +import { BackArrow } from "./BackArrow"; +import { translate } from "@near-wallet-selector/core"; +import { QRIcon } from "./icons/QRIcon"; +import { LinkIcon } from "./icons/LinkIcon"; +import { KeyIcon } from "./icons/KeyIcon"; +import { FolderIcon } from "./icons/FolderIcon"; +export const WalletHome = ({ selector, onCloseModal, }) => { + const [modules, setModules] = useState([]); + const [route, setRoute] = useState("WalletInfo"); + useEffect(() => { + const subscription = selector.store.observable.subscribe((state) => { + const filterByType = (item) => { + return (item.type !== "bridge" && + item.type !== "hardware" && + item.type !== "instant-link"); + }; + const filteredModules = state.modules.filter(filterByType); + setModules(filteredModules); + }); + return () => subscription.unsubscribe(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const getWalletUrl = (module) => { + let url = ""; + if (module.type === "injected") { + url = module.metadata.downloadUrl; + } + if (module.type === "browser") { + url = module.metadata.walletUrl; + } + return url; + }; + return (_jsxs("div", { className: "wallet-home-wrapper", children: [_jsxs("div", { className: "nws-modal-header-wrapper", children: [route === "GetWallets" && (_jsx(BackArrow, { onClick: () => { + setRoute("WalletInfo"); + } })), _jsx(ModalHeader, { title: route === "GetWallets" + ? translate("modal.wallet.getAWallet") + : translate("modal.wallet.whatIsAWallet"), onCloseModal: onCloseModal })] }), route === "GetWallets" && (_jsx("div", { className: "get-wallet-wrapper", children: modules.map((module) => { + const { iconUrl, name } = module.metadata; + const qrIcon = ["nearfi", "here-wallet"].includes(module.id); + const hereWalletType = module.id === "here-wallet" ? "mobile" : ""; + const walletUrl = getWalletUrl(module); + return (_jsxs("div", { tabIndex: 0, className: `single-wallet-get ${module.id}`, onClick: () => { + if (walletUrl) { + window.open(walletUrl, "_blank"); + } + }, children: [_jsxs("div", { className: "small-icon", children: [qrIcon && walletUrl && _jsx(QRIcon, {}), !qrIcon && walletUrl && _jsx(LinkIcon, {})] }), _jsx("div", { className: "icon", children: _jsx("img", { src: iconUrl, alt: name }) }), _jsxs("div", { className: "content", children: [_jsx("div", { className: "title", children: name }), _jsx("div", { className: "type", children: translate(`modal.walletTypes.${hereWalletType || module.type}`) })] })] }, module.id)); + }) })), route === "WalletInfo" && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "wallet-info-wrapper what-wallet-hide", children: [_jsxs("div", { className: "wallet-what", children: [_jsx("div", { className: "icon-side", children: _jsx(KeyIcon, {}) }), _jsxs("div", { className: "content-side", children: [_jsx("h3", { children: translate("modal.wallet.secureAndManage") }), _jsx("p", { children: translate("modal.wallet.safelyStore") })] })] }), _jsxs("div", { className: "wallet-what", children: [_jsx("div", { className: "icon-side", children: _jsx(FolderIcon, {}) }), _jsxs("div", { className: "content-side", children: [_jsx("h3", { children: translate("modal.wallet.logInToAny") }), _jsx("p", { children: translate("modal.wallet.noNeedToCreate") })] })] }), _jsx("div", { className: "button-spacing" }), _jsx("button", { className: "middleButton", onClick: () => { + setRoute("GetWallets"); + }, children: translate("modal.wallet.getAWallet") })] }), _jsxs("div", { className: "what-wallet-mobile", children: [_jsx("p", { children: translate("modal.wallet.useAWallet") }), _jsx("button", { className: "middleButton", onClick: () => { + setRoute("GetWallets"); + }, children: translate("modal.wallet.getAWallet") })] }), _jsx("div", { className: "lang-selector-wrapper", children: _jsxs("select", { className: "lang-selector", name: "lang", children: [_jsx("option", { value: "en", children: "English" }), _jsx("option", { value: "es", children: "Spanish" })] }) })] }))] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNetworkChanged.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNetworkChanged.d.ts new file mode 100644 index 000000000..af250b77b --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNetworkChanged.d.ts @@ -0,0 +1,10 @@ +import React from "react"; +import type { WalletSelector } from "@near-wallet-selector/core"; +interface WalletNetworkChangedProps { + selector: WalletSelector; + onBack: () => void; + onCloseModal: () => void; +} +export declare const WalletNetworkChanged: React.FC; +export {}; +//# sourceMappingURL=WalletNetworkChanged.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNetworkChanged.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNetworkChanged.d.ts.map new file mode 100644 index 000000000..d9c0c050f --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNetworkChanged.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletNetworkChanged.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletNetworkChanged.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,UAAU,yBAAyB;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA6BpE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNetworkChanged.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNetworkChanged.js new file mode 100644 index 000000000..5e09185b5 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNetworkChanged.js @@ -0,0 +1,7 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { Fragment } from "react"; +import { ModalHeader } from "./ModalHeader"; +import { BackArrow } from "./BackArrow"; +export const WalletNetworkChanged = ({ selector, onBack, onCloseModal, }) => { + return (_jsxs(Fragment, { children: [_jsxs("div", { className: "nws-modal-header-wrapper", children: [_jsx(BackArrow, { onClick: onBack }), _jsx(ModalHeader, { title: "You Must Change the Network", onCloseModal: onCloseModal })] }), _jsx("div", { className: "switch-network-message-wrapper", children: _jsxs("div", { className: "content", children: [_jsxs("p", { children: ["We've detected that you need to change your wallet's network to", _jsx("strong", { className: "network-id", children: ` ${selector.options.network.networkId}` }), " ", "for this dApp."] }), _jsx("p", { children: "Some wallets may not support changing networks. If you can not change networks you may consider switching to another wallet." })] }) })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNotInstalled.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNotInstalled.d.ts new file mode 100644 index 000000000..ee0fadf26 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNotInstalled.d.ts @@ -0,0 +1,14 @@ +import React from "react"; +import type { ModuleState } from "@near-wallet-selector/core"; +interface WalletNotInstalledProps { + module: ModuleState & { + metadata: { + downloadUrl?: string; + }; + }; + onBack: () => void; + onCloseModal: () => void; +} +export declare const WalletNotInstalled: React.FC; +export {}; +//# sourceMappingURL=WalletNotInstalled.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNotInstalled.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNotInstalled.d.ts.map new file mode 100644 index 000000000..2249ad357 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNotInstalled.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletNotInstalled.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletNotInstalled.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAK9D,UAAU,uBAAuB;IAC/B,MAAM,EAAE,WAAW,GAAG;QACpB,QAAQ,EAAE;YACR,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,CAAC;IACF,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA8ChE,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNotInstalled.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNotInstalled.js new file mode 100644 index 000000000..34b787a2d --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletNotInstalled.js @@ -0,0 +1,13 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { Fragment } from "react"; +import { ModalHeader } from "./ModalHeader"; +import { BackArrow } from "./BackArrow"; +import { translate } from "@near-wallet-selector/core"; +export const WalletNotInstalled = ({ module, onBack, onCloseModal, }) => { + return (_jsxs(Fragment, { children: [_jsxs("div", { className: "nws-modal-header-wrapper", children: [_jsx(BackArrow, { onClick: onBack }), _jsx(ModalHeader, { title: "", onCloseModal: onCloseModal })] }), _jsxs("div", { className: "wallet-not-installed-wrapper", children: [_jsxs("div", { className: "wallet-data", children: [_jsx("div", { className: `wallet-icon-box ${module.id}`, children: _jsx("img", { src: module.metadata.iconUrl, alt: module.metadata.name }) }), _jsx("p", { children: module.metadata.name })] }), _jsxs("p", { children: [translate("modal.install.youllNeedToInstall"), " ", module.metadata.name, " ", translate("modal.install.toContinueAfterInstalling"), _jsxs("span", { className: "refresh-link", onClick: () => window.location.reload(), children: [" ", translate("modal.install.refreshThePage")] })] }), _jsx("div", { className: "action-buttons", children: _jsxs("button", { className: "middleButton", onClick: () => { + if (module.type !== "injected") { + return; + } + window.open(module.metadata.downloadUrl, "_blank"); + }, children: [translate("modal.install.open"), " ", module.metadata.name] }) })] })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletOptions.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletOptions.d.ts new file mode 100644 index 000000000..0cdbb780f --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletOptions.d.ts @@ -0,0 +1,9 @@ +import React from "react"; +import type { WalletSelector, ModuleState } from "@near-wallet-selector/core"; +interface WalletOptionsProps { + selector: WalletSelector; + handleWalletClick: (module: ModuleState) => void; +} +export declare const WalletOptions: React.FC; +export {}; +//# sourceMappingURL=WalletOptions.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletOptions.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletOptions.d.ts.map new file mode 100644 index 000000000..62000a68b --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletOptions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WalletOptions.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/WalletOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EAEZ,MAAM,4BAA4B,CAAC;AAGpC,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,iBAAiB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAClD;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAqJtD,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletOptions.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletOptions.js new file mode 100644 index 000000000..3dbd342ab --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/WalletOptions.js @@ -0,0 +1,81 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +import { useEffect, useState } from "react"; +import { WarningIcon } from "./icons/WarningIcon"; +export const WalletOptions = ({ selector, handleWalletClick, }) => { + const [modules, setModules] = useState([]); + const [recentModules, setRecentModules] = useState([]); + const [moreModules, setMoreModules] = useState([]); + const [activeWalletId, setActiveWalletId] = useState(""); + useEffect(() => { + const subscription = selector.store.observable.subscribe((state) => { + const { selectedWalletId } = selector.store.getState(); + if (selectedWalletId) { + setActiveWalletId(selectedWalletId); + } + const wallets = state.modules.filter((module) => !(module.type === "instant-link" && selectedWalletId !== module.id)); + if (selector.options.optimizeWalletOrder) { + state.modules.sort((current, next) => { + if (current.metadata.deprecated === next.metadata.deprecated) { + return 0; + } + return current.metadata.deprecated ? 1 : -1; + }); + state.modules.sort((current, next) => { + if (next.metadata.available === current.metadata.available) { + return 0; + } + return next.metadata.available ? 1 : -1; + }); + const moreWallets = []; + const recentlySignedInWallets = []; + wallets.forEach((module) => { + if (selector.store + .getState() + .recentlySignedInWallets.includes(module.id)) { + recentlySignedInWallets.push(module); + } + else { + moreWallets.push(module); + } + }); + setRecentModules(recentlySignedInWallets); + setMoreModules(moreWallets); + } + if (selector.options.randomizeWalletOrder) { + setModules(wallets.sort(() => Math.random() - 0.5)); + } + else { + setModules(wallets); + } + }); + return () => subscription.unsubscribe(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + useEffect(() => { + const { recentlySignedInWallets } = selector.store.getState(); + if (recentlySignedInWallets.length) { + setActiveWalletId(recentlySignedInWallets[0]); + } + }, [selector.store]); + function renderOptionsList(modulesToRender) { + return modulesToRender.reduce((result, module, index) => { + const { selectedWalletId } = selector.store.getState(); + const { name, description, iconUrl, deprecated } = module.metadata; + const selected = module.id === selectedWalletId; + result.push(_jsxs("li", { tabIndex: 0, className: `single-wallet ${activeWalletId === module.id ? "selected-wallet" : ""} ${selected ? "connected-wallet" : ""} ${deprecated ? "deprecated-wallet" : ""} sidebar ${module.id}`, onClick: () => { + if (selector.options.network.networkId === "testnet" && + module.id === "here-wallet") { + alert("Here Wallet is not supported on testnet"); + return; + } + if (module.id === modulesToRender[index].id) { + setActiveWalletId(module.id); + } + return handleWalletClick(module); + }, children: [_jsx("div", { className: "icon", children: _jsx("img", { src: iconUrl, alt: name }) }), _jsxs("div", { className: "content", children: [_jsx("div", { className: "title", children: name }), _jsx("div", { className: "description", children: description })] }), deprecated && (_jsx("div", { className: "warning-triangle", children: _jsx(WarningIcon, {}) }))] }, module.id)); + return result; + }, []); + } + return (_jsx("div", { children: selector.options.optimizeWalletOrder && + selector.store.getState().recentlySignedInWallets.length > 0 ? (_jsxs("div", { className: "wallet-options-wrapper", children: [_jsxs("div", { className: "options-list-section-recent", children: [_jsx("div", { className: "options-list-section-header", children: "Recent" }), _jsx("div", { className: "options-list more-options-list-content", children: renderOptionsList(recentModules) })] }), _jsxs("div", { className: "options-list-section-more", children: [_jsx("div", { className: "options-list-section-header", children: "More" }), _jsx("div", { className: "options-list more-options-list-content", children: renderOptionsList(moreModules) })] })] })) : (_jsx("div", { className: "wallet-options-wrapper", children: _jsx("div", { className: "options-list", children: renderOptionsList(modules) }) })) })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts new file mode 100644 index 000000000..a81df61f0 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const BackArrowIcon: React.FC; +//# sourceMappingURL=BackArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts.map new file mode 100644 index 000000000..c0071a24f --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/BackArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BackArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/BackArrowIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAkBjC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/BackArrowIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/BackArrowIcon.js new file mode 100644 index 000000000..6d2404e97 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/BackArrowIcon.js @@ -0,0 +1,4 @@ +import { jsx as _jsx } from "react/jsx-runtime"; +export const BackArrowIcon = () => { + return (_jsx("svg", { width: "8", height: "14", viewBox: "0 0 8 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M7 13L1 7L7 1", stroke: "#6494EE", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CloseIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CloseIcon.d.ts new file mode 100644 index 000000000..c89027187 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CloseIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const CloseIcon: React.FC; +//# sourceMappingURL=CloseIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CloseIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CloseIcon.d.ts.map new file mode 100644 index 000000000..cdf4a639e --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CloseIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CloseIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/CloseIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAa7B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CloseIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CloseIcon.js new file mode 100644 index 000000000..87d25ab49 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CloseIcon.js @@ -0,0 +1,4 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const CloseIcon = () => { + return (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24", viewBox: "0 0 24 24", width: "24", fill: "#C1C1C1", children: [_jsx("path", { d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts new file mode 100644 index 000000000..3b05d27c6 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const ConnectionErrorIcon: React.FC; +//# sourceMappingURL=ConnectionErrorIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts.map new file mode 100644 index 000000000..ae7aa2503 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionErrorIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionErrorIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/ConnectionErrorIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAgCvC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionErrorIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionErrorIcon.js new file mode 100644 index 000000000..4d14836a3 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionErrorIcon.js @@ -0,0 +1,4 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const ConnectionErrorIcon = () => { + return (_jsxs("svg", { width: "21", height: "20", viewBox: "0 0 21 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M10.5001 18.3333C15.1025 18.3333 18.8334 14.6023 18.8334 9.99996C18.8334 5.39759 15.1025 1.66663 10.5001 1.66663C5.89771 1.66663 2.16675 5.39759 2.16675 9.99996C2.16675 14.6023 5.89771 18.3333 10.5001 18.3333Z", stroke: "#CE5A6F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M13 7.5L8 12.5", stroke: "#CE5A6F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M8 7.5L13 12.5", stroke: "#CE5A6F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts new file mode 100644 index 000000000..14eb5483e --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const ConnectionSuccessIcon: React.FC; +//# sourceMappingURL=ConnectionSuccessIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map new file mode 100644 index 000000000..9eede62f6 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectionSuccessIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/ConnectionSuccessIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAyBzC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.js new file mode 100644 index 000000000..99a200303 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/ConnectionSuccessIcon.js @@ -0,0 +1,4 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const ConnectionSuccessIcon = () => { + return (_jsxs("svg", { width: "21", height: "20", viewBox: "0 0 21 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M18.8333 9.2333V9.99997C18.8323 11.797 18.2504 13.5455 17.1744 14.9848C16.0984 16.4241 14.586 17.477 12.8628 17.9866C11.1395 18.4961 9.29768 18.4349 7.61202 17.8121C5.92636 17.1894 4.48717 16.0384 3.50909 14.5309C2.53101 13.0233 2.06645 11.24 2.18469 9.4469C2.30293 7.65377 2.99763 5.94691 4.16519 4.58086C5.33275 3.21482 6.91061 2.26279 8.66345 1.86676C10.4163 1.47073 12.2502 1.65192 13.8916 2.3833", stroke: "#4FD98F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M18.8333 3.33337L10.5 11.675L8 9.17504", stroke: "#4FD98F", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CopyIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CopyIcon.d.ts new file mode 100644 index 000000000..3ac535cc2 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CopyIcon.d.ts @@ -0,0 +1,2 @@ +export declare const CopyIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=CopyIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CopyIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CopyIcon.d.ts.map new file mode 100644 index 000000000..a52fb1563 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CopyIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CopyIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/CopyIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,+CAuBpB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CopyIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CopyIcon.js new file mode 100644 index 000000000..8daf2e1f3 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/CopyIcon.js @@ -0,0 +1,2 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const CopyIcon = () => (_jsxs("svg", { width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M6.5 15.25a1.75 1.75 0 0 1-1.75-1.75V6.75a2 2 0 0 1 2-2h6.75c.966 0 1.75.784 1.75 1.75", stroke: "#4F7CD1", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M8.75 10.75a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-6.5Z", stroke: "#4F7CD1", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round" })] })); diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts new file mode 100644 index 000000000..20f6bc75f --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const DownArrowIcon: React.FC; +//# sourceMappingURL=DownArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts.map new file mode 100644 index 000000000..ed672da4d --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/DownArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DownArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/DownArrowIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAkBjC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/DownArrowIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/DownArrowIcon.js new file mode 100644 index 000000000..bb8624b85 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/DownArrowIcon.js @@ -0,0 +1,4 @@ +import { jsx as _jsx } from "react/jsx-runtime"; +export const DownArrowIcon = () => { + return (_jsx("svg", { width: "10", height: "7", viewBox: "0 0 10 7", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M1 1.52382L5 5.52382L9 1.52382", stroke: "#4F7CD1", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/FolderIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/FolderIcon.d.ts new file mode 100644 index 000000000..310e7a78b --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/FolderIcon.d.ts @@ -0,0 +1,2 @@ +export declare const FolderIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=FolderIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/FolderIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/FolderIcon.d.ts.map new file mode 100644 index 000000000..6086bad39 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/FolderIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FolderIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/FolderIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,+CAwBtB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/FolderIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/FolderIcon.js new file mode 100644 index 000000000..041d26645 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/FolderIcon.js @@ -0,0 +1,2 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const FolderIcon = () => (_jsxs("svg", { width: "40", height: "41", viewBox: "0 0 40 41", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("circle", { cx: "28.3333", cy: "23.8333", r: "1.66667", fill: "currentColor" }), _jsx("path", { d: "M35 12.1667H7C5.89543 12.1667 5 11.2712 5 10.1667V7.5C5 6.39543 5.89543 5.5 7 5.5H31.6667", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M35 12.1667V35.5H7C5.89543 35.5 5 34.6046 5 33.5V8.83334", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" })] })); diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/KeyIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/KeyIcon.d.ts new file mode 100644 index 000000000..630584ddd --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/KeyIcon.d.ts @@ -0,0 +1,2 @@ +export declare const KeyIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=KeyIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/KeyIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/KeyIcon.d.ts.map new file mode 100644 index 000000000..c0260ab65 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/KeyIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KeyIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/KeyIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,+CAgBnB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/KeyIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/KeyIcon.js new file mode 100644 index 000000000..e47b7378e --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/KeyIcon.js @@ -0,0 +1,2 @@ +import { jsx as _jsx } from "react/jsx-runtime"; +export const KeyIcon = () => (_jsx("svg", { width: "40", height: "40", viewBox: "0 0 40 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M33.5 1.83325L30.1666 5.16658M17.4818 17.8514C19.1406 19.5103 20.1666 21.8019 20.1666 24.3333C20.1666 29.3959 16.0626 33.4999 11 33.4999C5.93735 33.4999 1.8333 29.3959 1.8333 24.3333C1.8333 19.2706 5.93735 15.1666 11 15.1666C13.5313 15.1666 15.8229 16.1926 17.4818 17.8514ZM17.4818 17.8514L24.3333 10.9999M24.3333 10.9999L29.3333 15.9999L35.1666 10.1666L30.1666 5.16658M24.3333 10.9999L30.1666 5.16658", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }) })); diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts new file mode 100644 index 000000000..f3e1c1b4b --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const LedgerDeviceIcon: React.FC; +//# sourceMappingURL=LedgerDeviceIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts.map new file mode 100644 index 000000000..ca21c0263 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LedgerDeviceIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LedgerDeviceIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/LedgerDeviceIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAoLpC,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LedgerDeviceIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LedgerDeviceIcon.js new file mode 100644 index 000000000..b2b155b49 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LedgerDeviceIcon.js @@ -0,0 +1,4 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const LedgerDeviceIcon = () => { + return (_jsxs("svg", { width: "317", height: "157", viewBox: "0 0 317 157", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M249.99 16.0994C270.063 -0.864155 289.788 1.58873 301.497 10.7365C307.402 15.3499 311.278 21.6575 312.267 28.1258C313.247 34.5412 311.413 41.2233 305.692 46.8044C297.366 54.9273 286.343 55.3362 273.015 51.5109C261.654 48.25 249.058 42.0377 235.726 35.4627L235.726 35.4626L235.717 35.458C233.367 34.2992 230.995 33.129 228.602 31.9618C212.742 24.2253 196.067 16.6575 179.842 13.8595C163.538 11.0479 147.552 13.0313 133.266 24.522C128.032 28.732 123.478 35.2086 121.716 44.8205C119.961 54.3947 120.992 66.9771 126.703 83.4311C135.432 108.583 132.899 126.677 123.575 138.063C114.217 149.491 97.5614 154.733 76.7887 153.121C55.0043 151.43 29.0621 142.206 3.29867 125.227L0.887817 127.942C27.2472 145.405 53.9251 154.952 76.5105 156.705C97.9028 158.365 115.96 153.035 126.356 140.341C136.785 127.606 139.045 108.029 130.099 82.2524C124.521 66.1801 123.642 54.2493 125.252 45.4687C126.854 36.7258 130.94 31.006 135.519 27.3232C148.794 16.6458 163.649 14.715 179.231 17.4021C194.891 20.1027 211.146 27.4463 227.026 35.1928C229.381 36.3415 231.729 37.5001 234.066 38.6531L234.073 38.6568C247.382 45.223 260.324 51.608 272.024 54.9662C285.819 58.9258 298.493 58.8501 308.202 49.3776C314.764 42.9759 316.974 35.1288 315.82 27.5826C314.675 20.0893 310.237 13.0029 303.71 7.90363C290.555 -2.37382 268.938 -4.62038 247.67 13.3537L249.99 16.0994Z", fill: "url(#paint0_linear_3_672)" }), _jsx("path", { d: "M260.264 17.8767L177.605 89.4649L157.679 73.9664L239.23 3.85423L260.264 17.8767Z", fill: "#6A7075" }), _jsx("path", { d: "M205.939 54.4577L199.764 50.2636L233.316 20.9053L239.907 25.8395L205.939 54.4577Z", fill: "#494E52" }), _jsx("path", { d: "M260.264 17.8757L177.605 89.4639L182.033 98.3202L264.323 26.363L260.264 17.8757Z", fill: "#494E52" }), _jsx("path", { d: "M177.236 89.4646L181.295 98.3209L165.059 85.7745L170.963 85.0365L177.236 89.4646Z", fill: "black" }), _jsx("path", { d: "M93.4708 99.6384L91.9948 110.13L174.653 92.894L164.69 85.7749L93.4708 99.6384Z", fill: "#DCDADA" }), _jsx("path", { d: "M93.1157 104.323L94.314 100.129L165.613 86.3483L169.208 89.344L93.1157 104.323Z", fill: "#C1C1C1" }), _jsx("path", { d: "M94.2086 99.7963L86.0903 101.272L92.3635 110.129L94.2086 99.7963Z", fill: "#B3AAAA" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M86.0903 100.907L89.0027 74.1304L178.455 55.2416C184.695 53.9962 195.766 54.7675 197.177 63.7058C198.284 70.717 195.506 73.9943 191.628 77.3592C188.495 80.0671 180.152 82.4646 178.343 82.8944C178.293 82.9064 178.241 82.9188 178.186 82.9319C177.38 83.1245 176.007 83.4525 170.644 84.5088C169.085 84.8158 167.382 85.1501 165.557 85.5078L164.933 85.63C146.312 89.2764 115.528 95.2297 93.9844 99.3849C91.1808 99.9257 88.5337 100.436 86.0903 100.907ZM185.076 75.554C190.748 73.3535 193.99 68.0745 192.318 63.7631C190.645 59.4517 184.691 57.7405 179.019 59.941C173.347 62.1416 170.105 67.4206 171.778 71.732C173.45 76.0434 179.404 77.7546 185.076 75.554Z", fill: "#F4F1E8" }), _jsx("path", { d: "M199.764 50.3994L196.768 48.3043L232.194 18.0454L233.316 21.6403L199.764 50.3994Z", fill: "black" }), _jsx("path", { d: "M239.968 25.9943L232.588 20.4592V17.5071L241.813 24.5183L239.968 25.9943Z", fill: "black" }), _jsx("ellipse", { cx: "182.084", cy: "68.0811", rx: "10.242", ry: "7.46772", transform: "rotate(-23.7949 182.084 68.0811)", fill: "#494E52" }), _jsx("ellipse", { cx: "182.084", cy: "68.0816", rx: "6.68462", ry: "4.87394", transform: "rotate(-23.7949 182.084 68.0816)", fill: "#494E52" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M238.725 2.93094L260.368 17.2564L264.865 26.4556L181.615 99.0341L175.16 94.311L92.0028 110.947L85.3267 101.399L88.3269 73.8157L178.118 54.8553L238.725 2.93094ZM178.599 56.2622L89.6786 75.0388L86.9321 100.29C89.0979 99.8725 91.4124 99.4263 93.8446 98.9572C115.388 94.8019 146.171 88.8488 164.791 85.2026L165.415 85.0804C167.24 84.7228 168.943 84.3885 170.501 84.0816C175.853 83.0275 177.219 82.701 178.015 82.5107C178.07 82.4976 178.122 82.4852 178.173 82.4732C179.048 82.2652 181.558 81.5669 184.235 80.5851C186.742 79.6655 189.286 78.5354 190.802 77.3758L191.151 77.0922L191.644 76.6595C193.341 75.147 194.723 73.6739 195.61 71.871C196.571 69.916 196.982 67.5029 196.448 64.1178C195.8 60.0131 192.959 57.7574 189.408 56.6566C185.833 55.5483 181.637 55.6566 178.603 56.2615C178.601 56.2617 178.6 56.262 178.599 56.2622ZM192.631 77.7565L259.555 18.9531L263.042 26.0869L181.808 96.9078L178.132 89.5713L191.724 78.529C191.859 78.4249 191.988 78.32 192.11 78.2144L192.111 78.2136C192.286 78.0617 192.46 77.9094 192.631 77.7565ZM185.491 81.6908C185.24 81.7868 184.99 81.8802 184.743 81.9709C182.013 82.9723 179.447 83.6875 178.514 83.9093C178.463 83.9213 178.411 83.9338 178.356 83.9468C177.635 84.1192 176.472 84.3971 172.491 85.1919L177.172 88.4492L185.491 81.6908ZM176.631 89.8707L170.479 85.5903C169.306 85.8213 168.054 86.0673 166.731 86.3265L175.769 92.9276L179.548 95.6924L176.631 89.8707ZM164.758 86.7132C146.252 90.3362 116.027 96.1817 94.6324 100.308L93.2258 109.197L173.543 93.1293L164.758 86.7132ZM91.888 108.207L93.0909 100.606C91.0848 100.993 89.1642 101.363 87.3471 101.713L91.888 108.207ZM258.581 17.8436L197.306 71.6841C198.142 69.5779 198.41 67.0795 197.906 63.8876C197.143 59.0539 193.743 56.4549 189.845 55.2467C186.921 54.3402 183.662 54.1916 180.861 54.449L238.84 4.77668L258.581 17.8436ZM232.505 16.82L243.089 24.5643L205.915 56.5106L196.042 48.0665L232.505 16.82ZM232.118 19.096L198.312 48.0654L199.744 49.29L232.584 20.9424L232.118 19.096ZM233.456 22.1396L200.878 50.2604L205.913 54.5664L239.041 26.0969L233.456 22.1396ZM240.195 25.1054L240.717 24.6571L233.759 19.5663L234.06 20.7586L240.195 25.1054Z", fill: "black" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M190.194 69.9744C191.32 68.1409 191.576 66.2271 190.942 64.5937C190.308 62.9603 188.829 61.7198 186.761 61.1254C184.691 60.5307 182.116 60.6196 179.553 61.6139C176.991 62.6081 175.029 64.2794 173.902 66.1141C172.776 67.9477 172.52 69.8614 173.154 71.4948C173.788 73.1282 175.267 74.3687 177.335 74.9631C179.405 75.5578 181.98 75.4689 184.543 74.4746C187.105 73.4804 189.067 71.8091 190.194 69.9744ZM185.077 75.8508C190.749 73.6502 193.991 68.3712 192.318 64.0598C190.645 59.7484 184.691 58.0372 179.019 60.2378C173.347 62.4383 170.105 67.7173 171.778 72.0287C173.451 76.3401 179.405 78.0513 185.077 75.8508Z", fill: "black" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M187.391 69.169C188.127 67.9713 188.266 66.7721 187.881 65.7812C187.497 64.7903 186.586 63.9984 185.235 63.6102C183.883 63.2216 182.173 63.2741 180.456 63.9404C178.738 64.6068 177.441 65.7208 176.705 66.9196C175.969 68.1172 175.83 69.3165 176.215 70.3074C176.599 71.2983 177.511 72.0901 178.861 72.4783C180.214 72.8669 181.923 72.8144 183.64 72.1481C185.358 71.4818 186.655 70.3678 187.391 69.169ZM184.174 73.5242C188.156 71.9795 190.432 68.2738 189.257 65.2473C188.083 62.2208 183.904 61.0196 179.922 62.5643C175.94 64.1091 173.665 67.8148 174.839 70.8412C176.013 73.8677 180.193 75.0689 184.174 73.5242Z", fill: "black" }), _jsx("path", { d: "M240.499 41.2441C239.744 40.3649 239.844 39.04 240.724 38.285L249.781 30.5067C250.66 29.7516 251.985 29.8523 252.74 30.7315V30.7315C253.495 31.6108 253.395 32.9356 252.516 33.6907L243.458 41.469C242.579 42.224 241.254 42.1234 240.499 41.2441V41.2441Z", fill: "black" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M250.743 31.6265L241.685 39.4048C241.424 39.6287 241.395 40.0217 241.619 40.2825C241.842 40.5433 242.235 40.5731 242.496 40.3492L251.554 32.5709C251.815 32.3469 251.845 31.954 251.621 31.6932C251.397 31.4324 251.004 31.4025 250.743 31.6265ZM240.724 38.285C239.844 39.04 239.744 40.3649 240.499 41.2441C241.254 42.1234 242.579 42.224 243.458 41.469L252.516 33.6907C253.395 32.9356 253.495 31.6108 252.74 30.7315C251.985 29.8523 250.66 29.7516 249.781 30.5067L240.724 38.285Z", fill: "black" }), _jsx("path", { d: "M205.779 71.4647C205.005 70.5642 205.108 69.2073 206.009 68.4339L214.989 60.7218C215.89 59.9485 217.247 60.0516 218.02 60.9521V60.9521C218.793 61.8526 218.69 63.2095 217.79 63.9829L208.809 71.695C207.909 72.4683 206.552 72.3652 205.779 71.4647V71.4647Z", fill: "black" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M215.951 61.8416L206.97 69.5537C206.688 69.796 206.656 70.221 206.898 70.5031C207.141 70.7851 207.566 70.8174 207.848 70.5752L216.828 62.863C217.11 62.6208 217.143 62.1958 216.9 61.9137C216.658 61.6317 216.233 61.5994 215.951 61.8416ZM206.009 68.4339C205.108 69.2073 205.005 70.5642 205.779 71.4647C206.552 72.3652 207.909 72.4683 208.809 71.695L217.79 63.9829C218.69 63.2095 218.793 61.8526 218.02 60.9521C217.247 60.0516 215.89 59.9485 214.989 60.7218L206.009 68.4339Z", fill: "black" }), _jsx("circle", { cx: "141.356", cy: "19.525", r: "10.1855", fill: "#FE89B4" }), _jsx("ellipse", { cx: "139.062", cy: "14.7094", rx: "2.42519", ry: "1.94015", transform: "rotate(-34.544 139.062 14.7094)", fill: "#FDF7FF" }), _jsx("circle", { cx: "252.489", cy: "79.7577", r: "7.78893", fill: "#EC5236" }), _jsx("ellipse", { cx: "250.434", cy: "76.3701", rx: "2.61272", ry: "2.09018", transform: "rotate(-34.544 250.434 76.3701)", fill: "#EDB69D" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M100.436 79.9254C100.461 79.6567 100.732 79.3897 101.042 79.329L106.657 78.2299C107.587 78.0478 108.281 78.5536 108.207 79.3596L107.759 84.2243C107.734 84.493 107.463 84.76 107.153 84.8207L100.416 86.1396C100.106 86.2003 99.8742 86.0317 99.899 85.7631L100.436 79.9254Z", fill: "#B3AAAA" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M95.8553 81.7775C95.9294 80.9715 96.7437 80.1704 97.6739 79.9883L98.7968 79.7685C99.1069 79.7078 99.3382 79.8764 99.3135 80.1451L99.1344 82.091C99.1096 82.3597 98.8382 82.6267 98.5282 82.6874L96.2824 83.127C95.9723 83.1877 95.741 83.0191 95.7657 82.7505L95.8553 81.7775Z", fill: "#B3AAAA" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M95.5865 84.6965C95.6112 84.4278 95.8826 84.1608 96.1927 84.1001L98.4385 83.6605C98.7486 83.5998 98.9799 83.7684 98.9552 84.037L98.7761 85.9829C98.7513 86.2516 98.4799 86.5186 98.1699 86.5793L95.9241 87.019C95.614 87.0797 95.3827 86.9111 95.4074 86.6424L95.5865 84.6965Z", fill: "#B3AAAA" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M95.2282 88.5884C95.2529 88.3197 95.5244 88.0527 95.8344 87.992L98.0802 87.5524C98.3903 87.4917 98.6216 87.6603 98.5969 87.929L98.4178 89.8749C98.3931 90.1435 98.1216 90.4105 97.8116 90.4712L96.6887 90.6911C95.7584 90.8732 95.0645 90.3674 95.1387 89.5614L95.2282 88.5884Z", fill: "#B3AAAA" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M99.7197 87.709C99.7444 87.4403 100.016 87.1733 100.326 87.1126L102.572 86.673C102.882 86.6123 103.113 86.7809 103.088 87.0496L102.909 88.9955C102.885 89.2641 102.613 89.5312 102.303 89.5919L100.057 90.0315C99.7472 90.0922 99.5159 89.9236 99.5406 89.6549L99.7197 87.709Z", fill: "#B3AAAA" }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M104.211 86.8298C104.236 86.5611 104.507 86.2941 104.817 86.2334L107.063 85.7938C107.373 85.7331 107.605 85.9017 107.58 86.1704L107.49 87.1433C107.416 87.9493 106.602 88.7504 105.672 88.9325L104.549 89.1523C104.239 89.213 104.007 89.0444 104.032 88.7757L104.211 86.8298Z", fill: "#B3AAAA" }), _jsx("defs", { children: _jsxs("linearGradient", { id: "paint0_linear_3_672", x1: "-44.5195", y1: "122.42", x2: "263.357", y2: "-8.65023", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0.110697", stopColor: "#232323" }), _jsx("stop", { offset: "1", stopColor: "#3D3D3D" })] }) })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LinkIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LinkIcon.d.ts new file mode 100644 index 000000000..836729de4 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LinkIcon.d.ts @@ -0,0 +1,2 @@ +export declare const LinkIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=LinkIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LinkIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LinkIcon.d.ts.map new file mode 100644 index 000000000..f05a60a53 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LinkIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LinkIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/LinkIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,+CA2BpB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LinkIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LinkIcon.js new file mode 100644 index 000000000..bbed8ca60 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/LinkIcon.js @@ -0,0 +1,2 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const LinkIcon = () => (_jsxs("svg", { width: "18", height: "16", viewBox: "0 0 18 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M13 8.66667V12.6667C13 13.0203 12.8478 13.3594 12.577 13.6095C12.3061 13.8595 11.9387 14 11.5556 14H3.61113C3.22804 14 2.86064 13.8595 2.58975 13.6095C2.31887 13.3594 2.16669 13.0203 2.16669 12.6667V5.33333C2.16669 4.97971 2.31887 4.64057 2.58975 4.39052C2.86064 4.14048 3.22804 4 3.61113 4H7.94447", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M10.8333 2H15.1666V6", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M7.22223 9.33333L15.1667 2", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" })] })); diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/QRIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/QRIcon.d.ts new file mode 100644 index 000000000..d7a585a75 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/QRIcon.d.ts @@ -0,0 +1,2 @@ +export declare const QRIcon: () => import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=QRIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/QRIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/QRIcon.d.ts.map new file mode 100644 index 000000000..d2700eb40 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/QRIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"QRIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/QRIcon.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,+CAsDlB,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/QRIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/QRIcon.js new file mode 100644 index 000000000..b471f661e --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/QRIcon.js @@ -0,0 +1,2 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const QRIcon = () => (_jsxs("svg", { width: "18", height: "16", viewBox: "0 0 18 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M7.22224 1.33334H1.44446V6.66668H7.22224V1.33334Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M15.8889 1.33334H10.1111V6.66668H15.8889V1.33334Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M7.22224 9.33334H1.44446V14.6667H7.22224V9.33334Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M10.1111 13.1429V14.6667H15.8889M10.1111 9.33334V10.8572H12.5873V9.33334H15.8889V12.381", stroke: "#4C5155", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("rect", { x: "3.61108", y: "3.33334", width: "1.44444", height: "1.33333", fill: "#4C5155" }), _jsx("rect", { x: "3.61108", y: "11.3333", width: "1.44444", height: "1.33333", fill: "#4C5155" }), _jsx("rect", { x: "12.2778", y: "3.33334", width: "1.44445", height: "1.33333", fill: "#4C5155" })] })); diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts new file mode 100644 index 000000000..9d49ab770 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const UpArrowIcon: React.FC; +//# sourceMappingURL=UpArrowIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts.map new file mode 100644 index 000000000..3c5c11bdd --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/UpArrowIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UpArrowIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/UpArrowIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAkB/B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/UpArrowIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/UpArrowIcon.js new file mode 100644 index 000000000..60c4d4b03 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/UpArrowIcon.js @@ -0,0 +1,4 @@ +import { jsx as _jsx } from "react/jsx-runtime"; +export const UpArrowIcon = () => { + return (_jsx("svg", { width: "10", height: "7", viewBox: "0 0 10 7", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M9 5.4762L5 1.4762L1 5.4762", stroke: "#4F7CD1", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/WarningIcon.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/WarningIcon.d.ts new file mode 100644 index 000000000..1faa3ffe7 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/WarningIcon.d.ts @@ -0,0 +1,3 @@ +import React from "react"; +export declare const WarningIcon: React.FC; +//# sourceMappingURL=WarningIcon.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/WarningIcon.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/WarningIcon.d.ts.map new file mode 100644 index 000000000..9b8130a57 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/WarningIcon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WarningIcon.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/icons/WarningIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EA6B/B,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/WarningIcon.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/WarningIcon.js new file mode 100644 index 000000000..334fe72a7 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/components/icons/WarningIcon.js @@ -0,0 +1,4 @@ +import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; +export const WarningIcon = () => { + return (_jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M4.95215 16.3536L10.2152 5.85657C10.9531 4.38481 13.0538 4.38519 13.7912 5.85723L19.0494 16.3543C19.7156 17.6841 18.7486 19.25 17.2612 19.25H6.74001C5.25228 19.25 4.28535 17.6835 4.95215 16.3536Z", stroke: "#E6B73E", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12 10V12", stroke: "#E6B73E", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M12.5 16C12.5 16.2761 12.2761 16.5 12 16.5C11.7239 16.5 11.5 16.2761 11.5 16C11.5 15.7239 11.7239 15.5 12 15.5C12.2761 15.5 12.5 15.7239 12.5 16Z", stroke: "#E6B73E" })] })); +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.d.ts new file mode 100644 index 000000000..509f1b9cb --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.d.ts @@ -0,0 +1,10 @@ +import type { WalletSelector } from "@near-wallet-selector/core"; +import type { WalletSelectorModal, ModalOptions } from "./modal.types"; +/** + * Initiates a modal instance + * @param {WalletSelector} selector Selector + * @param {ModalOptions} options Modal options + * @returns {WalletSelectorModal} Returns a WalletSelectorModal object + */ +export declare const setupModal: (selector: WalletSelector, options: ModalOptions) => WalletSelectorModal; +//# sourceMappingURL=modal.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.d.ts.map new file mode 100644 index 000000000..80b3dece2 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAUvE;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aACX,cAAc,WACf,YAAY,KACpB,mBA4DF,CAAC"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.js new file mode 100644 index 000000000..3b458e46c --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.js @@ -0,0 +1,58 @@ +import { jsx as _jsx } from "react/jsx-runtime"; +import { createRoot } from "react-dom/client"; +import { Modal } from "./components/Modal"; +import { EventEmitter } from "@near-wallet-selector/core"; +const MODAL_ELEMENT_ID = "near-wallet-selector-modal"; +let modalInstance = null; +let root = null; +/** + * Initiates a modal instance + * @param {WalletSelector} selector Selector + * @param {ModalOptions} options Modal options + * @returns {WalletSelectorModal} Returns a WalletSelectorModal object + */ +export const setupModal = (selector, options) => { + if (!root) { + const body = document.body; + const container = document.createElement("div"); + container.id = MODAL_ELEMENT_ID; + body.appendChild(container); + root = createRoot(container); + } + const emitter = new EventEmitter(); + selector.store.getState().modules.forEach(async (module) => { + if ("topLevelInjected" in module.metadata) { + if (!module.metadata.topLevelInjected) { + return; + } + const wallet = await module.wallet(); + if (wallet.type !== "injected") { + return; + } + await wallet.signIn({ + contractId: options.contractId, + methodNames: options.methodNames, + }); + } + }); + const render = (visible = false) => { + root.render(_jsx(Modal, { selector: selector, options: options, visible: visible, hide: () => render(false), emitter: emitter })); + }; + if (!modalInstance) { + modalInstance = { + show: () => { + render(true); + }, + hide: () => { + render(false); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; + } + return modalInstance; +}; diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.types.d.ts b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.types.d.ts new file mode 100644 index 000000000..7b4f5aee2 --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.types.d.ts @@ -0,0 +1,33 @@ +import type { Subscription } from "@near-wallet-selector/core"; +export type Theme = "dark" | "light" | "auto"; +export interface ModalOptions { + contractId: string; + methodNames?: Array; + theme?: Theme; + description?: string; +} +export type ModalHideReason = "user-triggered" | "wallet-navigation"; +export type ModalEvents = { + onHide: { + hideReason: ModalHideReason; + }; +}; +export interface WalletSelectorModal { + /** + * Opens the modal for users to sign in to their preferred wallet. You can also use this method to switch wallets. + */ + show(): void; + /** + * Closes the modal. + */ + hide(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: ModalEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: ModalEvents[EventName]) => void): void; +} +//# sourceMappingURL=modal.types.d.ts.map \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.types.d.ts.map b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.types.d.ts.map new file mode 100644 index 000000000..de8cef01c --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modal.types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/modal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QAAE,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IACb;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IACb;;OAEG;IACH,EAAE,CAAC,SAAS,SAAS,MAAM,WAAW,EACpC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,GAChD,YAAY,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,SAAS,SAAS,MAAM,WAAW,EACrC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,GAChD,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.types.js b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/modal-ui/dist/esm/modal-ui/src/lib/modal.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/modal-ui/package.json b/packages/modal-ui/package.json index 0da355ac7..587343a34 100644 --- a/packages/modal-ui/package.json +++ b/packages/modal-ui/package.json @@ -2,6 +2,40 @@ "name": "@near-wallet-selector/modal-ui", "version": "8.9.13", "description": "Modal UI package for NEAR wallet Selector", + "scripts": { + "compile:esm": "tsc -p tsconfig.esm.json", + "compile:cjs": "tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/modal-ui/src/index.d.ts", + "main": "./dist/cjs/modal-ui/src/index.js", + "module": "./dist/esm/modal-ui/src/index.js", + "type": "module", + "dependencies": { + "@near-wallet-selector/core": "workspace:*", + "copy-to-clipboard": "*", + "qrcode": "*", + "react": "*", + "react-dom": "*" + }, + "devDependencies": { + "@types/jest": "*", + "@types/node": "*", + "@types/react": "*", + "jest": "*", + "rimraf": "*", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/modal-ui/src/index.js", + "import": "./dist/esm/modal-ui/src/index.js" + } + }, "keywords": [ "near", "blockchain", diff --git a/packages/modal-ui/project.json b/packages/modal-ui/project.json deleted file mode 100644 index e113e0af4..000000000 --- a/packages/modal-ui/project.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "modal-ui", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/modal-ui/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/modal-ui", - "tsConfig": "packages/modal-ui/tsconfig.lib.json", - "project": "packages/modal-ui/package.json", - "entryFile": "packages/modal-ui/src/index.ts", - "external": ["react/jsx-runtime"], - "rollupConfig": "@nx/react/plugins/bundle-rollup", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/modal-ui/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/modal-ui/**/*.css", - "input": ".", - "output": "." - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/modal-ui/**/*.{ts,tsx,js,jsx}"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/modal-ui"], - "options": { - "jestConfig": "packages/modal-ui/jest.config.ts", - "passWithNoTests": true - } - }, - "version": { - "executor": "@jscutlery/semver:version", - "options": { - "preset": "angular", - "commitMessageFormat": "chore(release): release version ${version}", - "syncVersions": true, - "skipProjectChangelog": true, - "skipRootChangelog": true, - "baseBranch": "main" - }, - "configurations": { - "dev": { - "releaseAs": "prerelease", - "preid": "dev", - "skipRootChangelog": true - } - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": [] -} diff --git a/packages/modal-ui/src/lib/components/WalletConnecting.tsx b/packages/modal-ui/src/lib/components/WalletConnecting.tsx index 97a98cf20..039914552 100644 --- a/packages/modal-ui/src/lib/components/WalletConnecting.tsx +++ b/packages/modal-ui/src/lib/components/WalletConnecting.tsx @@ -1,6 +1,7 @@ import React, { Fragment } from "react"; import type { Wallet } from "@near-wallet-selector/core"; -import LoadingIcon from "../images/connecting-loader.png"; +// import LoadingIcon from "../images/connecting-loader.png"; +const loadingIcon = require("../images/connecting-loader.png"); import { ModalHeader } from "./ModalHeader"; import { translate } from "@near-wallet-selector/core"; @@ -25,7 +26,7 @@ export const WalletConnecting: React.FC = ({

    {wallet?.metadata.name}

    - loading-icon + loading-icon
    {translate("modal.wallet.connectingTo")} {wallet?.metadata.name} diff --git a/packages/modal-ui/tsconfig.cjs.json b/packages/modal-ui/tsconfig.cjs.json new file mode 100644 index 000000000..9f12707d4 --- /dev/null +++ b/packages/modal-ui/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/modal-ui/tsconfig.esm.json b/packages/modal-ui/tsconfig.esm.json new file mode 100644 index 000000000..a51c6f15e --- /dev/null +++ b/packages/modal-ui/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/modal-ui/tsconfig.json b/packages/modal-ui/tsconfig.json index 78867a313..e97fa1892 100644 --- a/packages/modal-ui/tsconfig.json +++ b/packages/modal-ui/tsconfig.json @@ -1,25 +1,15 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], "jsx": "react-jsx", - "allowJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true, - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" + "paths": { + "@near-wallet-selector/*": ["../*"] } - ] + }, + "include": ["src/**/*"] } diff --git a/packages/modal-ui/tsconfig.lib.json b/packages/modal-ui/tsconfig.lib.json deleted file mode 100644 index e4b5275a2..000000000 --- a/packages/modal-ui/tsconfig.lib.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": ["node"] - }, - "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": ["jest.config.ts", "**/*.spec.ts"], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] -} diff --git a/packages/modal-ui/tsconfig.spec.json b/packages/modal-ui/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/modal-ui/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/my-near-wallet/.babelrc b/packages/my-near-wallet/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/my-near-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/my-near-wallet/dist/cjs/core/src/index.d.ts b/packages/my-near-wallet/dist/cjs/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/index.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/index.js b/packages/my-near-wallet/dist/cjs/core/src/index.js new file mode 100644 index 000000000..cfb828bf8 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = exports.allowOnlyLanguage = exports.translate = exports.serializeNep413 = exports.verifySignature = exports.verifyFullKeyBelongsToUser = exports.isCurrentBrowserSupported = exports.getActiveAccount = exports.waitFor = exports.EventEmitter = exports.setupWalletSelector = void 0; +var wallet_selector_js_1 = require("./lib/wallet-selector.js"); +Object.defineProperty(exports, "setupWalletSelector", { enumerable: true, get: function () { return wallet_selector_js_1.setupWalletSelector; } }); +var services_1 = require("./lib/services"); +Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return services_1.EventEmitter; } }); +var helpers_1 = require("./lib/helpers"); +Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return helpers_1.waitFor; } }); +Object.defineProperty(exports, "getActiveAccount", { enumerable: true, get: function () { return helpers_1.getActiveAccount; } }); +Object.defineProperty(exports, "isCurrentBrowserSupported", { enumerable: true, get: function () { return helpers_1.isCurrentBrowserSupported; } }); +Object.defineProperty(exports, "verifyFullKeyBelongsToUser", { enumerable: true, get: function () { return helpers_1.verifyFullKeyBelongsToUser; } }); +Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return helpers_1.verifySignature; } }); +Object.defineProperty(exports, "serializeNep413", { enumerable: true, get: function () { return helpers_1.serializeNep413; } }); +var translate_1 = require("./lib/translate/translate"); +Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } }); +Object.defineProperty(exports, "allowOnlyLanguage", { enumerable: true, get: function () { return translate_1.allowOnlyLanguage; } }); +var testUtils_1 = require("./lib/testUtils"); +Object.defineProperty(exports, "mockWallet", { enumerable: true, get: function () { return testUtils_1.mockWallet; } }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/constants.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/constants.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/constants.js b/packages/my-near-wallet/dist/cjs/core/src/lib/constants.js new file mode 100644 index 000000000..50899a58d --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PENDING_SELECTED_WALLET_ID = exports.SELECTED_WALLET_ID = exports.PENDING_CONTRACT = exports.CONTRACT = exports.REMEMBER_RECENT_WALLETS_STATE = exports.REMEMBER_RECENT_WALLETS = exports.RECENTLY_SIGNED_IN_WALLETS = exports.PACKAGE_NAME = void 0; +exports.PACKAGE_NAME = "near-wallet-selector"; +exports.RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +exports.REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +exports.REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +exports.CONTRACT = "contract"; +exports.PENDING_CONTRACT = "contract:pending"; +exports.SELECTED_WALLET_ID = `selectedWalletId`; +exports.PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/detect-browser.js b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..a03402ab2 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,74 @@ +"use strict"; +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCurrentBrowserSupported = void 0; +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; +exports.isCurrentBrowserSupported = isCurrentBrowserSupported; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.js b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..0da744cc5 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActiveAccount = void 0; +const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; +exports.getActiveAccount = getActiveAccount; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/index.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/index.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/index.js b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/index.js new file mode 100644 index 000000000..eb80ab43a --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./waitFor"), exports); +__exportStar(require("./getActiveAccount"), exports); +__exportStar(require("./detect-browser"), exports); +__exportStar(require("./verify-signature/verify-signature"), exports); +__exportStar(require("./verify-signature/payload"), exports); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.js b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..5655fd8cd --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeNep413 = exports.payloadSchema = exports.createPayload = void 0; +const borsh_1 = require("borsh"); +const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +exports.createPayload = createPayload; +exports.payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +const serializeNep413 = (signMessageParams) => { + const payload = (0, exports.createPayload)(signMessageParams); + return Buffer.from((0, borsh_1.serialize)(exports.payloadSchema, payload)); +}; +exports.serializeNep413 = serializeNep413; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..5d00297d2 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyFullKeyBelongsToUser = exports.verifySignature = void 0; +const borsh_1 = require("borsh"); +const js_sha256_1 = require("js-sha256"); +const payload_1 = require("./payload"); +const crypto_1 = require("../../../../../../../near-api-js/packages/crypto"); +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +const providers_1 = require("@near-js/providers"); +const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = (0, borsh_1.serialize)(payload_1.payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(js_sha256_1.sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = (0, crypto_1.publicKeyFrom)(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +exports.verifySignature = verifySignature; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new providers_1.JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; +exports.verifyFullKeyBelongsToUser = verifyFullKeyBelongsToUser; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/waitFor.js b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..8d37d4cef --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/helpers/waitFor.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitFor = void 0; +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; +exports.waitFor = waitFor; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/ar.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/bg.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/en.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/es.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/hi.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/hr.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/ko.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/mk.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/sl.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/sr.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/vi.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/locale/zh.json b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/options.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/options.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/options.js b/packages/my-near-wallet/dist/cjs/core/src/lib/options.js new file mode 100644 index 000000000..587fab7eb --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/options.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveOptions = exports.resolveNetwork = exports.getNetworkPreset = void 0; +const services_1 = require("./services"); +const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +exports.getNetworkPreset = getNetworkPreset; +const resolveNetwork = (network) => { + return typeof network === "string" ? (0, exports.getNetworkPreset)(network) : network; +}; +exports.resolveNetwork = resolveNetwork; +const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: (0, exports.resolveNetwork)(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new services_1.WebStorageService(), + }; +}; +exports.resolveOptions = resolveOptions; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/options.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/options.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/options.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/options.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/options.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..1129f4fc6 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventEmitter = void 0; +const events_1 = require("events"); +class EventEmitter { + emitter = new events_1.EventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} +exports.EventEmitter = EventEmitter; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/index.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/index.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/index.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/index.js new file mode 100644 index 000000000..771f7ca4c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./provider/provider.service"), exports); +__exportStar(require("./provider/provider.service.types"), exports); +__exportStar(require("./storage/storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service"), exports); +__exportStar(require("./storage/web-storage.service"), exports); +__exportStar(require("./logger/logger.service"), exports); +__exportStar(require("./logger/logger.service.types"), exports); +__exportStar(require("./wallet-modules/wallet-modules.service"), exports); +__exportStar(require("./event-emitter/event-emitter.service"), exports); +__exportStar(require("./event-emitter/event-emitter.types"), exports); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..f2365f6b4 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = exports.Logger = void 0; +class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +exports.Logger = Logger; +exports.logger = new Logger(); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..7798a5f3f --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Provider = void 0; +const providers_1 = require("@near-js/providers"); +class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new providers_1.FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new providers_1.JsonRpcProvider({ url })) + : []; + } +} +exports.Provider = Provider; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..1d1ed0bf1 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonStorage = void 0; +const KEY_DELIMITER = ":"; +class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} +exports.JsonStorage = JsonStorage; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..b1b3430c7 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebStorageService = void 0; +class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} +exports.WebStorageService = WebStorageService; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..a27acfb1e --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,325 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletModules = void 0; +const event_emitter_service_1 = require("../event-emitter/event-emitter.service"); +const logger_service_1 = require("../logger/logger.service"); +const constants_1 = require("../../constants"); +const json_storage_service_1 = require("../storage/json-storage.service"); +class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger_service_1.logger.log(`Failed to validate ${wallet.id} during setup`); + logger_service_1.logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(constants_1.PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(constants_1.PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(constants_1.PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(constants_1.PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger_service_1.logger.log("Failed to sign out existing wallet"); + logger_service_1.logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(constants_1.RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger_service_1.logger.log(`Failed to sign out ${wallet.id}`); + logger_service_1.logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(constants_1.PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(constants_1.PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new event_emitter_service_1.EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new logger_service_1.Logger(module.id), + storage: new json_storage_service_1.JsonStorage(this.storage, [constants_1.PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger_service_1.logger.log("Failed to setup module"); + logger_service_1.logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger_service_1.logger.error("Failed to sign in to wallet. " + err); + } + } + } +} +exports.WalletModules = WalletModules; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/store.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/store.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/store.js b/packages/my-near-wallet/dist/cjs/core/src/lib/store.js new file mode 100644 index 000000000..fc078e464 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/store.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStore = void 0; +const rxjs_1 = require("rxjs"); +const services_1 = require("./services"); +const constants_1 = require("./constants"); +const reducer = (state, action) => { + services_1.logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? constants_1.REMEMBER_RECENT_WALLETS_STATE.DISABLED + : constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +const createStore = async (storage) => { + const jsonStorage = new services_1.JsonStorage(storage, constants_1.PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(constants_1.CONTRACT), + selectedWalletId: await jsonStorage.getItem(constants_1.SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new rxjs_1.BehaviorSubject(initialState); + const actions$ = new rxjs_1.Subject(); + actions$.pipe((0, rxjs_1.scan)(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, constants_1.SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, constants_1.CONTRACT, "contract"); + syncStorage(prevState, state, constants_1.RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, constants_1.REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; +exports.createStore = createStore; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/store.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/store.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/store.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/store.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/store.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/testUtils.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/testUtils.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/testUtils.js b/packages/my-near-wallet/dist/cjs/core/src/lib/testUtils.js new file mode 100644 index 000000000..5e0cc0df9 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/testUtils.js @@ -0,0 +1,107 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = void 0; +// Remove Jest import +// import * as jest from "jest"; +const jest_mock_extended_1 = require("jest-mock-extended"); +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +const mockWallet = async (factory, deps) => { + const { options, storage } = (0, options_1.resolveOptions)({ + network: (0, options_1.getNetworkPreset)("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const walletModules = new services_1.WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || (0, jest_mock_extended_1.mock)(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +exports.mockWallet = mockWallet; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/translate/translate.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/translate/translate.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/translate/translate.js b/packages/my-near-wallet/dist/cjs/core/src/lib/translate/translate.js new file mode 100644 index 000000000..c5573a87c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/translate/translate.js @@ -0,0 +1,81 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.translate = exports.allowOnlyLanguage = void 0; +const en_json_1 = __importDefault(require("../locale/en.json")); +const es_json_1 = __importDefault(require("../locale/es.json")); +const zh_json_1 = __importDefault(require("../locale/zh.json")); +const bg_json_1 = __importDefault(require("../locale/bg.json")); +const ko_json_1 = __importDefault(require("../locale/ko.json")); +const vi_json_1 = __importDefault(require("../locale/vi.json")); +const hi_json_1 = __importDefault(require("../locale/hi.json")); +const ar_json_1 = __importDefault(require("../locale/ar.json")); +const hr_json_1 = __importDefault(require("../locale/hr.json")); +const mk_json_1 = __importDefault(require("../locale/mk.json")); +const sl_json_1 = __importDefault(require("../locale/sl.json")); +const sr_json_1 = __importDefault(require("../locale/sr.json")); +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en_json_1.default; + case "es": + return es_json_1.default; + case "zh": + return zh_json_1.default; + case "bg": + return bg_json_1.default; + case "ko": + return ko_json_1.default; + case "vi": + return vi_json_1.default; + case "hi": + return hi_json_1.default; + case "ar": + return ar_json_1.default; + case "hr": + return hr_json_1.default; + case "mk": + return mk_json_1.default; + case "sl": + return sl_json_1.default; + case "sr": + return sr_json_1.default; + default: + return en_json_1.default; + } +}; +let chosenLang; +const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +exports.allowOnlyLanguage = allowOnlyLanguage; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; +exports.translate = translate; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/utils.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/utils.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/utils.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/utils.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/utils.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.js b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..8ffb4cc07 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletSelector = void 0; +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +const setupWalletSelector = async (params) => { + const { options, storage } = (0, options_1.resolveOptions)(params); + services_1.Logger.debug = options.debug; + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const network = await (0, options_1.getNetworkPreset)(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new services_1.WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new services_1.Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; +exports.setupWalletSelector = setupWalletSelector; diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet-selector.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/index.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/index.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/index.js b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/index.js new file mode 100644 index 000000000..d7ee97f6b --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./wallet.types"), exports); +__exportStar(require("./transactions.types"), exports); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/transactions.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/transactions.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/wallet.types.js b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/core/src/lib/wallet/wallet.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/my-near-wallet/dist/cjs/my-near-wallet/src/index.d.ts b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/index.d.ts new file mode 100644 index 000000000..1cfb7b4f7 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupMyNearWallet } from "./lib/my-near-wallet.js"; +export type { MyNearWalletParams } from "./lib/my-near-wallet.js"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/my-near-wallet/src/index.d.ts.map b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/index.d.ts.map new file mode 100644 index 000000000..4b4528b7c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/my-near-wallet/src/index.js b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/index.js new file mode 100644 index 000000000..c9145a85b --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupMyNearWallet = void 0; +var my_near_wallet_js_1 = require("./lib/my-near-wallet.js"); +Object.defineProperty(exports, "setupMyNearWallet", { enumerable: true, get: function () { return my_near_wallet_js_1.setupMyNearWallet; } }); diff --git a/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/icon.d.ts b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/icon.d.ts new file mode 100644 index 000000000..7cf9a6062 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAMAAABOo35HAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD8UExURUdwTGx5rpLO8YOYx1Og0ly29X5ezR4mT0tiji4eWJ953KGn1Jxs7qB9xvfD/Us0gduu8yeh4HOq74dD647R91256eSz+j82cbvg/dSj/LuL79Wp6zCf24KN9xANGRANF59d/0W+/taa/8iN/3HL9uOn/z638Bil7l3G84TP+FHB8o5A/0i9/ZjU+47S+vq8/4Qy/S6w8O+x/5Rp/wyg7G2T/s+T/vO2/+qt/1qp/qDV/HyD/ki4+4R7/qnY/tyh/1Gx/ptU/76E/2bJ9Ld8/4t0/pxe+XvN9iOq7rB0/0i88aRk/6ps/z++/naL/mab/mGh/pVM/wub5mGd+fAEOhEAAAAgdFJOUwBEyWKA47EKJhnFluGA6l3H67Du6crdNOXs5q/I65rcQbfB9AAAIABJREFUeNrsnE9r4zoXxidOG9tNQqBvSrLKeKGF7WIz4J0WgSCuDc1s7vf/Mq/+S0d2p7Zkd7i0SsZJh3th+PGcR4+OpP748T3+4yNODofDKY2/SYxgdbhcfl4ul9M3rY9ZpZefbFwu6TeMD8dJwPp5Sb6l9eFIL5zW5TDoWrEc35wEjtOFDWPxjE2aJMkqWa3W6/WevuigPyVJ+tWngTg+HQ58PmSDQlqvt5Eax+jIBv2UY7umyL6u0JiMBK6DpETp4KqmL/ngX9hnwcEJYl8TGIV1EpzOEaNUCUBqFPwPfRX0W8GfFSPGgX255JCcTpwUByVY1WAU/FHwLxRWV3RdIYGtvhIvKqoVI0WriwoGK1CDvLi8JDouse5L8YqT08M2Op+vVFOYl54wJ+5PkppkJUkJZYlipN9RV1Ne69UXmCOT0zY6Xq+4Kip7GEYGmKZVyNF1ghj9whx//ZfltXQYTE/b8xnTUeFr1R82Lm7vwuPh6Cgz9jr+TVx8Mt+zcTgt0w6Ik310xIJVJXxdUaqgsIzH1w6tjlekxrVdpX/FSlb7zW63a+lrt3vazG8JFiqHVa2ewOQLlR70W1oX58XlhSiv7aerKz4xUvd7Rse9pWO32xxm/VfE6To64yt1KyEsgUt8ckT99GDsHUpL6oq9EaKT4+cWY5weNrvfbZtlNwqLfkpcM0o8XtFMhZlRUT7YYDLKEtmhsurQJNO6R0sEL0brk3FRWe3+ydpMDvblzpDtnvYz/SPihIYFzHRFYYE6xMazBnJWYTyrhsri4uqEfSESPX+WdcWnza7NbjemKyYpVob/Ml5Zu9vP0cmME1aBxZXDuSpdKWSGlK0qxUqteSxUphA7hLoOsednWVe8YiV4y34zTYkX9a4bhXejtbgJp8VQcVmJuDA4Gyp7d2K8TFn1oGnJWbEjqO5ywnLE5+iK8mGyEnbFlMV0dWO1GEyLmhWdA1kKrdiTG7y2duPvss3QWx1qVLVLSxZiJwRWdOQTxJXsd9qrGKvMHsznn4JocbNic6B5KWW5wlLMBmbDesjcOzN4KZLj0uKKD7tWcslcVIJgiLbi1fasSYk3p2WUJTsOdsqqHGVBw9I5q7BQcVp0XlxYXKdNa4Tlqkp8/uNNi0UrzupqawsLd8cYqqoXSkHOqu0ED5SF1AshQo1+tRyteM+F1RhGjXy0oiwZLU9txWwdKEhpTKIIjWv1pDUQHGpXW66uUGfTWi8WIk5Pd6Ao5VqNNDCGq7170WIx9IqFqq4iuXNUVyWr95RVDeYsSKqwPEvSkrgQLcXFhHW/STz8T2uqz9DKfHwrPVisMP/GSV0tZdkxvq6qgf6fzu+1hQsoC+mwRQd/Pi5kXOnmt+Jh53fH4mkG220m/gOSh0gpyuBSVVhhuNxRsbRfh+5sCH1LCqpjvNg39kHYrLiIcfEqZHwah5DzM8tbk2glbBbEVgHKqVANMxViJzvApWFd9wOWcng9FSrHQtLpaUJdgFa8euqHheExzeWptRuzMgqzgpaO8bClVVXuhoXSVT0kLCEtwUo+mG2hxwVoxetdNhYW09YkXUFQ3LIMJ1OJGPJyFoiqVVrD6K6VpSdCpS0xlqjEdD8a1hRa8fYs8DiuBUrRpSWF1e/+DbSzrCq0YpaaDjv2mJ9Wutll9w8xNWKGpLT242gl0fnDEsRDylKkqoF2Vu24FoxYcsGjypDQEa3npRVvRllWw8MXXWGPpJVE0bXvWCad2sLCfc9yZkSoqkI3suyljnQrrimOi+Q5mplWuhnp7zKqUm2lo6wQlqGqQygsteDBoAFfuWsdp1Oquu+82dBZyoKuRdhr3kqksMbSov8dja8jtZVsoyFlye6DrSwtLVxbydQA05hqW1qOZ1mrQ1GENGyxx7y0KKzbOFgNz6ajXT5xogO+2j0H4Fm2tNxeqZXgB5SF3JQFBnWtefPW2DJsVLRvR9KKk4GgpV1LSQv0HjDcwh8CpTfCQHPGWJampF1+zrw12rPElDghQXBa2PV3LFc9lrIwbCtbs2ExBMzOo9ZEqCtQUpLFmOfH59lW1emYAN+2rb1snEDrHWm56QE7uAZmQ1iInb3QkaTEgwhgiIgPNCetdNxqpzUmn4kexFhauOdbYDVtdwAr9zzb8JahyqSwCjtkS4vwwX/K82g7T38rnqgs9Rf30S5/xX9QlhO1avNyldVzeKejbKpQSosI46Jhi+Rzxa109DoajFs2ntYfpNWbEHstmrofsmQZFrD5Dk2LCJNnpkWBoXlMPh4Jq4ENG563vLTVC1qgDut+F75/5AiUIfR36er6Wy4URrp5bCsZBavpb2fcRva3+tqCMb7CTg+w6p8qfb8MkeblmpaweOZblFl5nKPRHHuW4fj+FshbeIgXPPBQgSNa8iwpnAjtIjTuToBpyaW0GvPYFlXWPYTWhDnRNJcx1rs8yrC0ZfWOO4CGA5gLkW1ZrJ2skAlBWQPl5CXctpiyfGG12ciVz0lWIjZLa6Osyj3XVtfvG5YmVViGZa11pGUREUpFepDSIjPYlqeyGtXfmpK3sNUAtGj1TmnB3p+7aWiON1jW3klJ6ToEwqKoaNp6iP8KrEa5/di8dbLnRNxrl1Z21JLLRJgd3MMzrrur7E6QeQBYpCRRMkPO8itDtbc4tmNzBgZvw3Kb8AM7PEJbmhXYMESgj0V0yDI1mHNplcdgafkbPKfF9hPHnA0cWPmArGV1acCJtt5+YQH9ynYsgvS6EDllSGnRKB/s8QEGb3Yxxs6Jg5YFtyyArApnbSjPdPcSKQLKUgbveFYe7vFB0WFKf6u3kYhB9wH2ljUrFUrroe1CI6qOGGERhFCfE/8IlVaYsqZ0bNTKB2OVIrBTifJy4cAR3HcWOhKYG0d7M+Fc0vJTlld/C86JIGrpJQ/olaqLTXVtoSqsRGpWOTC5m3DFKTFQ3LVCc7yXstp+f2vUno/JW043XsbSuhq4kDJ07hZurMJAOmBXiloZJi3fBN/CoyNsPzGdsPKxYZmzy8KvsK5F9WUok0LXIqCfbCJDrljlYpRh0krDytBaJ07RluNa8Jj3UV0if5b3pu2DpI6yYMAyjQYrMhD9CpVWHBwdVH/r9xRaIMTbTRoBar9aJWKs+H1XSqxn8JpVJ2dDiQrBKEqAsgKlFbaQhnlrdCVewTa+Vha/X89+iUMM/49EACsKc/IdwfMNBLRIkWtYufb5IGkxZbE7AtMXh9nAefnt6P1ErNfV8iYPxmd2QeKdS3txslpTXPJeU1cg5PRnUK/+BB9LVDNIi+0btu2f3Gg0vZFnbHQPomK3U0Qgra7nj26Is9s/xyOlUxRDZ9d0KLXjlealPCsnQdJK+CZrm80w2imVKLqB/HoKV9W7ooK4okJ1sxCMWUQld2QbFvArupbmrZpVgLL+xy6DZfdwUqzLNS1viWXO9Rptk1E7e1xdtAaVbSHU26oAwT03ZiWZlbQO/ZsPFNbrLbsNH7qd0gzU57fS8VmeX9SkFTj+kH+SbKNanGCTJ7E63vgjCEYsouZBRYm7OzP4kL4WhfXr9XYb3H+ePjfesmYCLd6Jv068bMPEpY/O2Cdm1E40sqrQrUTOy9/iGSxFqwlgpc9vNU9jK5HdAJ4kK3W++vkIt+w7qzmK+v0GC1Qelh44rF//3uTN6CbMuW6j89aPlHdsztH0y7rsArGqxM5q+BF3BW3lK0WLLRD9LV7Aotq6ZzJvNb7RwfS3Rs2JlBaNml7XRpLt8UiorApwykjHhtwOC4ZUKT/KR986lLAorYErdF7r63a0ttbedwOpcRHSdXCXAsYG1fIjDi/28K1DBYvTalvv4OD0t0ZpK/b/JRuMlrMJTdw8CrO7paz8JRSW0FZIx9Ta8hmprZBuCaWVy/1CGLGsuK54lcLdpbJy7zo0sLhvZd77Yg04NHJfntY2Mg1lgnrtPuDrSloS1+NzGgpLJoh7gLIm97dCGuLbI4E79o6/W7hIqVmVtAx969CG1U+nPnOizBC/F6e1itR2DhlY5pjuqO1ZUlovq3BYglbr5fONX38rpCW+juz9HOT0sGzLKqVxleLta1oQFvetW3Zv5+lBbBf+HQvUtuSBoj/VoPH4UqAqc+JnWg4sOSe2QctEfdBmwv1EP9uKOnUeC2gqH/YrSYo9/JKWC4vTus0grAnpNLAQYcJyls9lbmJDKQ2ePl7mgRWUt5yY2ixNK3k+8gPJTsCydSVQKUxSWW+PXhv5fVgib4V2A6f1t/yldRwMDU5TRvAy0aEs0cNMsGbpb8lfntE0y9JKoiM76O4IK7eDOzAshuqNKeshnQmWS6v1tq3x9xP9XYvYsKyOe8nempYsQEXMz+FF82+YVtuG2tZtcd+iyZRYW6nvKctQkuMlmUtZpr/VhvsWpbVdjla6PZZcWQ4qKCrbsdh4K70yvFbW68Cc6N+yUbm0bTit5bQVr6J8uN0ODMtW1hufDn0yPNvd+TWsLf9EqhY+7LNZ2OWTl37/2O7J6LhgAXsLgcVxvc6Yt8zvSWKLxmZJWunzsXRxldzaS9utchsVez94K+v11+uwbwVKq2kFrHY5WjRqlWYjh6jFoFw8A1BvFqvH5yBlDWnLt2Uj9qcbRqvhymr+T9vZtTaOZGG4m51O3M3AsDOEgaEDXhjsxr6JcXxh3AKLHQnFDk68/v//ZavOV51TVfKHpJRkxUl6LubhOW+dKtlO9VG0fGhFrajsxiihfqi8grPLUpphtbhV9lhH4wdN4fjA3Pr88PcPvcahXQZdgRoVserUaHEZiluGGd5P7BD0TqeyFq18xn8YrdHvf4fmXWJd1oNRg7Wj8z8P3WA9zcmsltwqO9JybQMdOD6oEu//lXRY0X6MTIEECi4dYc0F1DzfQdy8v+UJ4bnU4/FDaEGnlZglpH7sog6LaHWGRbjmuZiH/a36JqfGJbGKYDm3PuJDMSHhCdR/bRf6Q9XezuT7rpdZ8/ZK7HDHgutPToL17QNoueUhvxg5tA2zdDm4I2a7fmXIauV53XY/sQ51aMWq3OHduv8QWDOJLIXqh4703Uyfuy6LQzILec3T+TB7P7E+qxaQqmOriNcH0Bo9yEvVeB6cmbTaxcB2HVfSbBYAw2JM7bpyfwuLcImJtRwniQWX6tvQtD4/SNdOG6N6caP7djnc+PJ5gMxq706vuZ+4ZLeYVSSWgzW4W86szK6MXTdrWjt4dHk7nZg1n8/VtBhXI+xvjc/uby3JqmWmaSCxMLaGdotghbUg35UIMs0w1yned2jWfefM0p3pvGUP4qJZwoucGusCJFp+fBv0k/hGDz/0YtDs8dneKqCaDGKWZNdT4tbljrTWdbhMpkJmVT3+OiQtB2um7jnbxY0qQJ1YPcyai1y6i8j2W/t2qZYRqXEovzpYVQ3uFpo1i7YZQv3586cpQW9Wl92/XGaZ6DK5db4/LTmyIrGqcHwELc4sm+ncJESUhoL1FBqurFpP6t0F7QvCjFdwFlqsQWn5MkxWzrtMtyCgJu4yhFmm45onbpXnb1EsWxosa1WBtIaaEwFWvBZUC5uIFdLqDusYVaEqQusXvV7+TOfOk+BYNe2+XYi88mOolIeAT2/ghElwNrOoepnlWR3n84xhmQ6i9fVb3F2N064dkSmzCj8eB3Jr9CDNle7Wd7swD052P9GncBmoDMPM+DTP3/NJtmw8onKZmwi5Fw2kioqOohiGlocFbu1UtxDSPVSeOXqU4TFHLJv14FYN7xVe2i0stcixabXUNViwWJV3a4hKFLNmihdTwifCKDzpUYZHC0zahywtiK19VIDpRMiNu80rJZaj9fsAtBjWTjUMO92ua7Xw7BnwSOqYmpVu2+A6Mbzblxv3fIdly7CAMgxjiA4CYamJb5ZMfgGVXL/80sMsVqtlZmztIJZxgxUCq9LrQc0KcG38uRmgEo1ZyqbJ2aM7LMaVZpfs3cyztPCtFRmvKu5IbbqHCgRag1QiwFJTn2GlmanI6m+W+HWMaCVuHZlW3da5i1TWrFCDHtVmsxmAloMlQTWTXQWKp0kUVSHgf+kd8MfsnJj2XEfcCoTw2ktoRfvtUeMeEqsiq1wZAq1+f6uKzOJdPV2CkxSS59cPVnokXVfccdWv+HmS/iVY+2XYw4q2RTWqQoe7w7QZhhaYtTPrZQ3JcuJHH1hH/7DhdcxFl4w7/5dJa9pp2OdWg8s42yuNisXyoyctb1ayUtZJBXAmhItpdYSFlEItJlH/xIvroNcfd3/+dkevvvKvWEv3RdMaND0DmMW0Nr1oebNyLdXErnCi0RkWD7aLWJ1x64/fvn79fId/7HZZi1e1whRt91FYVRmzerpFZXi2X5jIV8bWDVZ9LAWUkMo1EtJ1Aaz7T/fOrVevVT3WVsUb7rJyjkixWQd39HILzTJNekBjrhOFqxesSK44up4ULoL16etvd/tXvPds072qkiosKqa1kcZBxPK4utNCWJNs/ck1HovesCDobXTlNm3mHhb8x86t2t7ICbcmosCy6b7hA8069KFFZsVa7VSq6yeTvmVYGrtEMNui6m1nMMv915/vKKdqulTSt5ttGdlpUGFlxDocDo933WiNHtKEujAWPc0qLau5jq9owRhgebd0uHupinQbWa8HqXUnXAcgBaxWh45uxbAmqldQeOiER68yLMsScSlk8zpdWwsyhgWViFpVyzTZk/WglKASC6rw4HF1oxVgtXQJA5tVloKq1Dmvp8fjXG1yCSxPqwpuKbVUMxol1maz4XTHqRBjyz2+dKE1ejgPCYyyhzs7wgJSZUlfkuyisrSGBVi+g6jiFWGVqEW0glgqsCCywK1OKe9gRY1CWnxcfwuB1xkWc4IncTWa3YgjNRAKFtGqlrl90ciqWCzMduAEo1NueViZOmOFBJvF1QXWCM2CzEJmx1SxOOafDCxPCzjV0GApXoXZdGepCh1X9GBYqw65hWYlrGwJmktvsxAXSEWtRGnnRtN6GVjgVpXZkpEVYdUa7oeN9srBWt2cWzmzJtqsuBi7Z9Y3gCU1SJXIlqXtRA4Wp3yyHoxQ8RZWCCsK9kDLfXcrLQ9rkYZ5kCgN+K5mMSxGFqqR7Kqj+IJLBAtzq1qmPYPdwrK9aJgHoQLJrMOtuQVmJYjgXOgiNN9MBoClHHOUyriz5+g6xrDAragOw3KwkPWNFCEtcgQVksLr6TZaZFb7KZR6Z5aDNfbv/ir5UqoqlGqsfYuq6jGBhbRyN1PNPFgYs6QAV+HwxG7LLQernU/4brHAi79O+phV+3Os1QpVidkPvKivd5cUVkRLbnpVIlZh58GDqkGsQjpXb7f18lSGhtWCSjBAmqjrortZY4+pRrESwUqFS6mVgWVpFYlaG7V8Pti8Ikj0ZXXjnAhmLfQ5YVDqqYDql1ke1jjQMry4Eo/Y53PY58yiDsJsM5gGy/buB91fHYhVGDek/Oi7AWN1khqkn6FYPc1CYgxprHDRUsi2qVlYwa1CZ9aGOyyn1SFaO4cGS+N6W51ucGv0fTGxXlnBFgttFz/vCsvfLGVa4NhYcCGyY62v3rA8rOBW6LA20jUUei3Im1hhKgyk4Pp29arawbJjop43Ot0n8rNFD1j0MVBAyrHSuPx3ZoKEamyBxbQKfTdHljgFpxUvni0qKcM3h8qN1ZX3qhWsiSq/JsKmYPpf/bsrrJI+6hftGktdcoJFRXlsNYtpFXaJYzZGD3bxvDJinUgsr9bpykqMzGqUPnSNqPkfTjrC2qcfkFyOpSxrnfiyOfFrGyykpefBTaEXz9E8uJJ+VInlI4vduoJWBGvSLK4ZA8ESZPi1DGVZcpNRtpoFtEzPYBpRnALtrowpQc4sxHX6ckUlOlgN+nQBk9arh1l7OrLAalWTXJXtZqFbUS9qbk4c1EYyLQkF1xtVIMXW++mKSiSzCFdDlwy5ZjCz8NPYWqjpyMce9gwscMvcdi4MqDiwbIPlig9JrQDW6XLKs1lGL/u0SdB1N2vvxhgeltWeQOFnO2F/AW7V58zCfqsw97z0grAt3FEsZPUORXg6gVsXaOnMaoSOMo1/1ah/1nSHxQcz4xPJ7eUznsSzs2ZRJRZF1LdT9W3OouLGwU2GDta7w3aJFpnVhPJrDJ7G/gwf/cxiu1gxOeGo4aAPfPefnHwelneL2lHdim7OspIqpHHy4/39Ii0d8E2sUfhBNAv0gIVA9qKXyMWo8M8QwMce+uMSLMotuxq02wwZrzwqYYW0PKwLtDwsB6KhSxNUEoKNqVP4TVdY2RFwuVHTQ8ZFWOBWYe7Qm3VzbpHDnTtOhG/vPNbvp3O0Rt+bhlGFcmzEpsY84cegsOzwRYiVCI8rYHm3HjniDxu7MarMsmqFxDoJqbW7nnOLYZFYGlljZsfmw8w6P66ABbSCVXb/KrCKpsFQgGTWybFar8/RElgtgkXNF3zpDOvV/c+/wtk2kl+91lfA8q+xeTQNVnTXK+MV8joRrTcQy7t1WrfT8rCm7rDEwhFCKyRZD1ivROsVTz7CU48Hjj3942vMgtx6DHtYuRoM+wzgFdegEwraBjDrtPZne245WFODa5EyW1hinc16JRpBL4WIkfkTBn7zch2sT/d/3lVKLLMzGtL9zezMYLxLuK9JrnWrW6Pv0ymgmvqvLQOLk89FH1ivTIUhAROtGP8S/+XrlbA+3VMl4vbVJocq6q5wInS03kLCr5lW9p1cDhZyimuxaTLJz5r1MUtXnsYkHMUtP16uhoW0HKeVeQVI3GCtQsC/265BxPIpn/3kCjZrinKdI7YI0HqZJVwUMEtIf3ctLKjEx41e56R3clCslXglWgGkdzrWbZUIsIDV9KJbIfS7wopNujxerof16SvQStbPqh19W0WstFlrMWvrjhwthBWAYX41TWt+NU0/WFcRen2h8+UWWOiWbbHS2xOrRKt3UYpTfutwZWgFWOQWxDxNkPkkW0y7wnrZnyUEpx9Myz/55wZYQCu8SkZe0hDFO+z5ua7hzXglgYVjkqHlYT1PY2DypSX3hzbrhVGFg8S6ySyitUn7dtW4UzNKvZUmpVk5uVJaDtYzY9K0zrLqCusl8QiBvITn8iMef90Ei93KRLtZ5mSLkONq61vTHK3R92ej1tRY1UiG6THtAYvNoZMtwrrjIlTjn9vMIlq5lbPak1G5rkgJLjdmp+02peVhAa7nJkn6WLJesO4BFvIJGW4jKgL18o87bjTLDaAVrQdDWtEsqHCZuNqiXOstDttvEayp8at5bkI3kavHHma9hHKTQE8oMSl33A4rdSvpGUJgSXvlzi2H1RaKMXWLyjCuxQSUUqyzWVJsJphSTMypo1mf7kdIK4DSeaXbqzWtCY1ZAsqPn5qWg/X8jLQI2rT5nyR+nldXs15UQOkyNJg0KT86wLK01B7y6i1e5di2fcsZvyW9ttv/83Z+PY3kWBSHpdkkZBtlHjYtQr9UlaCkliXUKGuIZClRKQ8QbQlU+f7fZe17/edel9MTXMlWMmmGHqTh1+ceHx9XB0FpASxnW7XV19uyb161TxTZBv9OEkHq2vLHFv7JejsnQ4t2ok5Ze8fKVDOfetEzjd+Ki8rL6pcR1urxMdCa/DSoGC+trC6o641RsmIbAovO3n8PiMqj0srKei8GT4tW7vuervYrlkYBlMe12uEgBm15ZcFLZ4B1b5yTw1UP8iyAlRBWwBNe6LXIfOMKoPXxYW9Y2//nY7+PhtDPn98PkhFU9lXpy7v85CfoarnUcqqJvKzfL98It8BsAKweKfvqTCpoatuYR45nMW3t9dOdOn+QLJrK7ZvVhrq7sayNMNrCBDH52SEqa/PE6Ol+0UsMX08Ea+ul5fhwVTX6uch+S5TxP6/hFhm8FQssa0+ncPUZzyCbQ60tYXBpYKq4/of53xgjLFRWR5TFokScU/NgbWOHsoMXJpCBgscAWCNDC6Koze57X7f7JOpZbbyugrLEBqdQCVGYe2xGZm+4tLyctpZ8FD2wN6+vXFhbMn3bSFRJVEOUhdr6cJEU7pQBTh9hCtnFSCnrWRqVVlZr1sTxj5+1QQW4nLaiWXzju+xBytoGUfE49Z4gBdcQWIbWB4mjENo/yAjS/TOCoroCezdjKIq2ba///e3bz87pCrVFvQscfslBwcdDYPUiQkpSICoANgjWhZtER2tF94Mstq+YtysrK41KGGKFxnV9ff2XhtWhtGqnrbAq8j2QP9sYMIY9Ub0fGsATKIvR6jUNn/EySMYQdWXsSr8abcH1WHeIy0qrphvr5VsoI2qyCcqHFRC9p43KU8KrWgx9g7Bvek2047fHzSAxrE/r7DwyWF2Z0CBUIdQv7VpFWxQaWW0Gsevq9CxaeXGvz4S15VuZ9yglbPkAGlTDYRlaRlQmv/ePU10rs+EJSxhXN7TEpoA5dNJq2zeqrc5vrP0vxMLsJObCOjx7yCpSVnUCZekEoWkZZe0/UVurz55fRbJyjmWEZUSlgRlVaZEhrSWZRKetlKgGKiusfO9pT2cj2FTVcFigLXunzH7fWwXjAssqC0htQFqgKGGYASzU1rKjq2LtaHmNLUM1mA8r7VV9XBWwak4Cy2gLItZ+7/srnq74MiiU3RQKq6y2LdzVIi3CqrZPjwsF9rY8jbKSsgJM20hWp/Asq61Pcwix/4zWwY2vGryyhN0/Y2wwBl+wy2srTlxdWBxJjljWA2AxaTV+DWxIDnWiAlwngWW0Ze/s49vBOLe7rgG2hPphrp0A14IRLITo06ptogdp9TY/g5WVSFXc1wOuxWney91M4iqxErLcDnvnYFdGWIBMGVYQTAtM823NJtE3gh1fGHE9PAmsHiSNaFv5+TulsqxvOVR7XvWtIllZUgBIuCn0w4jawry1rLl18YrLfmIgrKb/oFbVBFQng4W+FUh5Wa2ItVtZbUBROikQQu6DHX46sSZ6YFxay2GwGp4XmjgveGWdFhbSYstgcPcI6FJiAAASE0lEQVRQNIBZaWIGijP3yOJ3zuUJrM6VzXXweEttAKwmmr8tD1aoqSYM4uKEPwmG0Nq4jMWmUOAiuAFdCcQUxhA/2rXpNbGrvXeBdXVuHLNhNdtD80eiFVGWlCeEZXyLnTvTgAUrILRX2I3iI9JUAVtEKy3UVnShprrwSz0EVjKruxXQ6coP4UmVBdpiLXLQlYIO2ccrE0VVawaxcN6lGDNVJGjV4eiH9Db5sJreZpmJinECaZ0UltfWph+wbCVj94PWs4qIkGiDifV2PmRx7IysrMByYTmv2vZUZXn5LHoeWJggrFWtwrmzcr0oqqpVrfAzVxR9ajuBnU1bp/eJ/mCxyx9Db+69FFr5dEVRyZPDsrT4aWrQFZbIkBsEiiteCp2yIKQWpN86FCKWy2xYyW6hYcHKfSBPbvDBt1jZ/mjrmLAOqp6tk2URgykw1Z/6XdM1saN53hlYPqwmHkNnV02wdmlFBR/cXZ78x9AirfhAFVVlHZ0aFqyJ7Y6jcwkfsrzRFdv+kI4rX1l/RuUEFSZRympx+p9w7GgBscfQyeB2MK0sl0a9siyuVAfhZQXtc6ayFgcmkGwGvbSke9ydHtbI0lIrUrmbGVT+ZCINrGWDCKPo+61+5HLOlQVruqj6siKJoUFhyWBYAGt6clhWWyt+kANHXgJ9XbXUrLyiRG8Qd3rpJNpKKmwArMQEelQkZUmUl4F1hh9ib7QFth4OCKEYRc+yWaFVTFHCK4poS7TK561umR7GHFij74skqortcGSQlQEm5d3NGWBdXFxqWuSGBhhCJURR9MOooFGLwCpsM6hh/a5TsAYoa3T1r2jLTLbNTUDlE5a9ZuNzwLrw2jLhARq+X86wqDfxrNUzMnCuonD9Fjh6F81jFqzLBeHkHcuLSpIBNJqytMrZ5ehstADW4wZEFQ4Hv3IplyDImuiP+FFdWbB+zMLWpgp7G/2AkSNRFJFZXPOr88BC34JbioATFsi0wHJBVJiQJeKkhToT9ouifmuosi4AVt/VUVmNdJx8aLDXmUzL0wKbh+8bTijcrKVVJrCDUNGqyPstrqw8WOOblLHTnkHa5EAcS8r1mUwLaYGqrLebUewzOpRQhbctVFbc2HjHz4KFEb6i5UKvkeETKM86h4GWu5lB4bGXlY7oc1IJXm59DLT43qfOh1Vxw/Lbm/QMlrIszxNLKS17WI8nN2n9GMcSETIVBhG+OJxVW2SWWBas0XRBW74qLvuca+EQVo7WGefQ+ZaAATTDJBIxQdjaPSEx5feJqqDniR3ND3nKurzbVtGpoI+fvpIJU1jio6zm30dnpaVshSASXV+UT6nAqMUXzuxs3iJxq8tT1uWC1XxEYBVtsIhflRLm8P580gJaQrV2Z6iK/jYwlA5t6t9cA4Fx9rfb+Xh95SlLZwfaWjWVbLysnLhoHnXKktX5LN7Ran2PwDCFIot8NqjLHZbZSWT9lh/DPGXp7CCdR5HkwHVFUFla8szSsi4P37Ld8YiCHUf/IT8UeMBvx9in086ZVpc9hpPpXRXvnoOkYAL9QljapRCe5VmlBbR+qVan0h1fDnloJ5m+JTUgftIBM0YftYF5yhpdLXp6on0Mze0WF8Bay7vZOaUF+0TjW5jgRTJOaY8SCXIicHL7xIL3W5ljqB2+Cmc4TcTLSUwGwypRWmtZnnNBdLTghiIRO1PUv8M2sWDBwX+NzhgC/4bBG0mlmbAuftykMrskyyBPWGBZa7kuy7tzdQ+EljL3qhX+kEuIY7Y+9r4kP5IGF79/KxcWmJYvZWQ4wmH5ypKynoUKO7PHO1pws7vpinHLp0Xy94cXCXi+gxgwhmBatDqWdPtMAlYp0aykxEEsy/V6Pj0/LfNtKvVoJol2ovE+cRcXhIwV3lH5O/hWLqzLWWxU9JCQ0iq9sNC5jG1Nzktrgr7lTriCHSlCSdBKXvGzV8G0Ze8NzIZlkhbt2yUVVkwKJ3FtnuXaDOLsanTxf/EtkEbRMvOmdbP4w3F13G91+bDMCY+MhSXjUqaM10KYQzkfQGs0Gn3F5TFdujrB16RhZVQpz1dMWf4em1xYbA5lhAuAlfxhRLWG14chtEaX08sjaYW8hSIr4v1PwuEVKylYvzVAWaPxTcRKVgd0FeI7sCo1rTKX1uTqdn6c5QEtPIaAb3f3x9OK5G+LqA3MhgVzSJo+CwpRVSEyBFpISssLXvNojae3t0+3t8fS+qUK51voUja779KpQSSaU8heeJ44AJYO8bKJ+/aoRi5tYCDCkmvgZWh9H39Zzfe3T/o6ntaj/jYdrSMbeUFKVbelBnVpbWXD0uvhXcOPJ6SkrEpuWWYpRHWtgdZ6Ppt+7Qc4ji41q5enp5eX2+Mm0SQIE0ahaFbpLgvVJZzszG/6/yDut+p8WKMrHeJlQxJDf/ccRGWVVeIUmqt8mN9ffSFwjb/Pb180K8PreG35xKQOnYmlT1zdEPrLZPl8WBc/ZjJq26XXVhmCu9/nrO2KuMYLbP5ocenVd377+voE18vr8bR22G/tFHekHasf1CF7xzICnprWAFi4P/TZiuqqlL0toZtBMCyA9fCg4+n99yNwjUbjqZWV1hX88vQFl29dhEjeDn+wDPSoXK3fXufD0n/YMj4frDgrNolrqiszhlpb2rlmf4drNBlPjaxeYALx+fTyhUmENlCIg86+a/HgJ/xFDOHvfRC+5jJvzfJtwNt43Nw5s5L9ZZBpStplkPPS6jJGr4dxMjosqqv7+e0zyOn1+cldL1/xrfZw5dD7GwShq+f7b+N6Q2CZ6kGy4C57wd0qax1CVgRLPzUuPY3j3j5G72zGl05Uz0/P1t2f3CAeTcv0UiSR28r5byZyJ4IcbYgYAuticnMXWneuLRm1DTSUMlRw3Rle0++X4/FkMjLXZDIZj6+m9zON6vn55fnFXd6zvkgLd9M75TpRyKnh6HB3jIu1g2Bpacn+zTJS0sAQMkOIWLgYPoTnw8Prej6fGWT6mpqX2b3mdKvn75nCeqIm/3Kky0/ifmsnxIGB3P0psKpBsLRrrdlJDstYss/K03pAXERcmtfD66vOBHO87m7/197V9CaOBNGwBGEmCkJIOEKcMHK0QpbQ+GD3wVLfkfj/f2e7+rOqus0ANtFqEq82yaz2sPvy6vWrV9VG1OrPtcGqtlA9xq3efCti1SVRnn6LcFgZgjENnDrw8qNoBcUqUswCpEoQfKF/BpD0F8CKVKEVLf1DfTu3rudbUXtYRXcxBjNLqVZxOHCl8k0hyxu0d0d1iLCy3DLwCA0T/KFtMVwn83cg1l3cYvlWVbGCO/uUSx+HPqzp/N2xgcxS1MpTviF4d9cT0irUSAWsZCkMVsJ8hQJ030WoQouVF632PpVn+Rbuf7reKH5MZukDMZVgFThywNTCCi8tVE6yNECGX74EqcC3vgI9v+7QLZRv7aveCuzzYoOZpai1OjR8WcYNc5zJgkBZUktqqWXx0lhZ5QI2aVJ5yBy1Tr4K2xOqxdvRwvlWmE2fk1JvDD3ZxRnMrJc5dIimv4FqLIjAG+cOKZYsUljJcBKWZW2p5bEKAo+5RY7DO9H6VOrel2+lr9hhyl0Gg/Xy8Us2h4KOCaPD0Hc7xGVJxCwNmAh41eFAbJFsBY+FEbvHb/F8i3Gq613jGl6GEItvi0NTsAm0mxK63F2yXocB5cAKSAl7KCaYdWqxwt/rt+yQiwcQfA0Crwg6CIeDBc60cYYh2IUQY7kmOnCrRJJFkcJw+aclttSTCjGrvT2x+cT5VnrNpkfqx2AWRDUWLdoRNrglbJLdDvZYlFmWXbVxDgnNailcj+VbzKKfA6vQ6k3g2AhgvSzeVSFagMyiLUlmcPRexL5B4m4nwIUf5LSQuj+k8nG+db4i9mc8uR6FWVCIBW6g4fvBTVYbHzdwzZJMtIwjLSmzrH8P5gEz61G0XL7V4bvT1R9s1kjMgkIsDiwZtUVImRVpFrWk2DtY6yA8Wix3iAzE4/lWxUuyS1rVkZg1VydiOAllg6Y5wV/hxMEplkMMkaoMx6EXeSZaqKNmaL3d3Ccav/Vp7iCevfPq2FUxvBFRdaOABaPiLZpQSLcEQjxDiP1KKVO+oceUuk46xDRO3eNSvGNCdtH78tH+FtEwshzRVSOBNQfZKhBeZPZFAuUS5zOo16FFaMtQJJl1aoPTah9Ay+VbnX/9n4GrSvsHN3sci1latkjgwEK/okfc0VmITsOa+Cx2HBIbT587slOUL8f51vnCOFaNySzjH2B32zHLjSh46OfR4k10KYi8Y8B0qhXxqk0YiMfzra7q3ZZ3ujUeWDBzDWZUaxaqQ4nSGdwUBoUX1Gfh3tAUYU3L8JQowkH5Fr2+Eu1MjlmGGq28CdkM7gm5yXIpKZH4kjY7tBRRtOzrMMksjVZ2o251aLvvfGWSuB+dWeq3tcsLnMzwsU7BipD7d1KIdbI3JMRK2Yfb0YLOpwqJzYV2h1qviN8aOGRN7E9tnV41XNujrpCGMyU/CyOhJ3FpGwxEohJXt+9v0XyrZ4/SBPKqDKejvlsO0DJWq0li5aYU/iiUUatjoaprFjxQT4rz0rgS83s2knC+1XGnFe75jA2WQctcaYK/Ghl5Uq9WVxTLwcVki4wtyFgs5tZtl8+yK/lWdDRWY4Ol0dKGlJ6EEtt3pFgso4m8Q8JnOWaRyXQbNz43/W/xfOvaNjP4rMnLqM98sttawUo5UjoCI71OD7FSHv7PzFrduCQX51vn3rcDKrDGvkezALSkkXncQIc+Giv8NWax7rDFVovMpaMucXn7zTOSb/kbKuHlBej9LF21Gf3S0fzj11YSVkWtDmdW1BcGWmHNQvlf29sdAla7O27pxftbFdetyjFrfLBAt3JrSMNeJNOsMNyh1KJ4mWF+GzstNmltqV7t7tqCDvkW9aM8n7+MaeAjlZcS2Xgi8bKkXbRHill4wRKtOHlIlODy3ht62dTfT6zsx/LAzxcSCyr2/R5b3x1ab7kxWqV1EQVLsiQ17wnvQJvD1IEYpha2IFuzanp3rSi0rN+CzzGi40R/GVZht37SPcmP9xxEvpTR8gxay5LJmWHiLAzMYkENppVZE1lNH7jLaKav5h75J+SmlVuUtDmXNvlPqUI7el2Z7rDEK1ncOkhmSvt8ViJZpi7LbZk+eAHbvPUHADt3x+6otBzsRNiG1xH05mkXcOeLiTkUrbYXkkwqJG116lRvGKjV+jKkIk/j5Rbk6tFrW6DynXt3ML2/ad4fcpw99WUnH2+5kEVBAmW278fNQ8lNVp/Ae3lvUUiavz/+u9d+qzOvsKEpvN3jmq2ferN7nk1XW1WGDq2SRMpsN6ukDt5zq7cMww6g+bbMd4PegaDzLfPpMu4dbdU+vPPoMnvyGxbAzecNGYKVvdNV6uB9CYq0wLPFNh00ZIM/EfCoDddlb1/C5d6VpP7B+XnqjgeKK1AuvVnLh2DSrd5a8xAx69rw8GRFy9JquRuuKIvp5viphz1ddzzqt/8YAVN2dPaavTz/WUzeVtuyARfhFmeSAU3Zw6xoxBNymlNtLqm0Il8NpZX9b93M9r/trOe815+GCHVZzdbTr8DKwJWL0otWgdRd9galxGiJVAJ4EgYpEPa3yVjzvNfZWctWePa/j/+8ZvOXL3oWIPSluTTXo1oRs5KTQ8otDVXdKmEf8deeTdf6rrCWLv31c7b5KlqZX9j84321DPfAPKd6NatGTqsvATydhFDWapwKxEf4Zvbv0b5JdzbbrL+QVki6cjq5v+azBK5AMrIIkiXq8aEycE1e1xv9rF+nky+Hypw1Ci4U/PHWsExrVjzDd3CJZf4EqEwlLLJskmWJW31fVoyGXTJK30WsWXUqKiXMWj4Nqv/LA9oVtF57L5s3hHEYmRtquPQlHrvwoKklalV/Stb/ZqjMyaivptalbKRbCHGpgyDxn2hxCRrkNFLCkGrxt0NlqvFjqvGSOpZx8QxCy2+V+mtiUI3KqgOCLSA1yb4DUgSvrbYSNbpsWCYyeCCU8lOaW8Cpt+k3QsrhpW9AA2CWXLWguXJtL7IKW4MA1E5xavHdoPKGRhFspRADWkkMV+0WQ+D8g5vA6l97n35XoJCjmb7rS/Y5YMYaRGCTvpY/zb45UKQmgWQ7hRl5dj8wXaPZQr/PQeGTLfQLHn5A+Xl+np/n53nC8x/tAMljWkeBnAAAAABJRU5ErkJggg=="; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/icon.d.ts.map b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/icon.d.ts.map new file mode 100644 index 000000000..359bd883f --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAA4wiB"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/icon.js b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/icon.js new file mode 100644 index 000000000..b760cbb80 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/icon.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = `data:image/png;base64,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`; diff --git a/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/my-near-wallet.d.ts b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/my-near-wallet.d.ts new file mode 100644 index 000000000..e863dae1c --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/my-near-wallet.d.ts @@ -0,0 +1,10 @@ +import type { WalletModuleFactory, BrowserWallet } from "@near-wallet-selector/core"; +export interface MyNearWalletParams { + walletUrl?: string; + iconUrl?: string; + deprecated?: boolean; + successUrl?: string; + failureUrl?: string; +} +export declare function setupMyNearWallet({ walletUrl, iconUrl, deprecated, successUrl, failureUrl, }?: MyNearWalletParams): WalletModuleFactory; +//# sourceMappingURL=my-near-wallet.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/my-near-wallet.d.ts.map b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/my-near-wallet.d.ts.map new file mode 100644 index 000000000..aff4d33df --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/my-near-wallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"my-near-wallet.d.ts","sourceRoot":"","sources":["../../../../../src/lib/my-near-wallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EAEnB,aAAa,EAKd,MAAM,4BAA4B,CAAC;AASpC,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqOD,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,OAAc,EACd,UAAkB,EAClB,UAAe,EACf,UAAe,GAChB,GAAE,kBAAuB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CA0B9D"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/my-near-wallet.js b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/my-near-wallet.js new file mode 100644 index 000000000..bbf28d285 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/my-near-wallet/src/lib/my-near-wallet.js @@ -0,0 +1,181 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupMyNearWallet = setupMyNearWallet; +const wallet_account_1 = require("@near-js/wallet-account"); +const keystores_browser_1 = require("@near-js/keystores-browser"); +const transactions_1 = require("@near-js/transactions"); +const utils_1 = require("@near-js/utils"); +const crypto_1 = require("@near-js/crypto"); +const near_api_js_1 = require("near-api-js"); +const wallet_utils_1 = require("@near-wallet-selector/wallet-utils"); +const icon_1 = __importDefault(require("./icon")); +const resolveWalletUrl = (network, walletUrl) => { + if (walletUrl) { + return walletUrl; + } + switch (network.networkId) { + case "mainnet": + return "https://app.mynearwallet.com"; + case "testnet": + return "https://testnet.mynearwallet.com"; + default: + throw new Error("Invalid wallet url"); + } +}; +const setupWalletState = async (params, network) => { + const keyStore = new keystores_browser_1.BrowserLocalStorageKeyStore(); + const near = await (0, near_api_js_1.connect)({ + keyStore, + // deps: { keyStore }, + walletUrl: params.walletUrl, + ...network, + headers: {}, + }); + const wallet = new wallet_account_1.WalletConnection(near, "near_app"); + return { + wallet, + keyStore, + }; +}; +const MyNearWallet = async ({ metadata, options, store, params, logger, id }) => { + const _state = await setupWalletState(params, options.network); + const getAccounts = async () => { + const accountId = _state.wallet.getAccountId(); + const account = _state.wallet.account(); + if (!accountId || !account) { + return []; + } + const publicKey = await account.connection.signer.getPublicKey(account.accountId, options.network.networkId); + return [ + { + accountId, + publicKey: publicKey ? publicKey.toString() : "", + }, + ]; + }; + const transformTransactions = async (transactions) => { + const account = _state.wallet.account(); + const { networkId, signer, provider } = account.connection; + const localKey = await signer.getPublicKey(account.accountId, networkId); + return Promise.all(transactions.map(async (transaction, index) => { + const actions = transaction.actions.map((action) => (0, wallet_utils_1.createAction)(action)); + const accessKey = await account.accessKeyForTransaction(transaction.receiverId, actions, localKey); + if (!accessKey) { + throw new Error(`Failed to find matching key for transaction sent to ${transaction.receiverId}`); + } + const block = await provider.block({ finality: "final" }); + const nonce = accessKey.access_key.nonce + BigInt(index + 1); + return (0, transactions_1.createTransaction)(account.accountId, crypto_1.PublicKey.from(accessKey.public_key), transaction.receiverId, nonce, actions, (0, utils_1.baseDecode)(block.header.hash)); + })); + }; + return { + async signIn({ contractId, methodNames, successUrl, failureUrl }) { + const existingAccounts = await getAccounts(); + if (existingAccounts.length) { + return existingAccounts; + } + await _state.wallet.requestSignIn({ + contractId, + methodNames, + successUrl, + failureUrl, + keyType: "ed25519", + }); + return getAccounts(); + }, + async signOut() { + if (_state.wallet.isSignedIn()) { + _state.wallet.signOut(); + } + }, + async getAccounts() { + return getAccounts(); + }, + async verifyOwner() { + throw new Error(`Method not supported by ${metadata.name}`); + }, + async signMessage({ message, nonce, recipient, callbackUrl, state }) { + logger.log("sign message", { message }); + if (id !== "my-near-wallet") { + throw Error(`The signMessage method is not supported by ${metadata.name}`); + } + const locationUrl = typeof window !== "undefined" ? window.location.href : ""; + const url = callbackUrl || locationUrl; + if (!url) { + throw new Error(`The callbackUrl is missing for ${metadata.name}`); + } + const href = new URL(params.walletUrl); + href.pathname = "sign-message"; + href.searchParams.append("message", message); + href.searchParams.append("nonce", nonce.toString("base64")); + href.searchParams.append("recipient", recipient); + href.searchParams.append("callbackUrl", url); + if (state) { + href.searchParams.append("state", state); + } + window.location.replace(href.toString()); + return; + }, + async signAndSendTransaction({ signerId, receiverId, actions, callbackUrl, }) { + // console.log('alohaws mnw signAndSendTransaction', signerId, receiverId, actions, callbackUrl) + logger.log("signAndSendTransaction", { + signerId, + receiverId, + actions, + callbackUrl, + }); + const { contract } = store.getState(); + if (!_state.wallet.isSignedIn() || !contract) { + throw new Error("Wallet not signed in"); + } + const account = _state.wallet.account(); + return account["signAndSendTransaction"]({ + receiverId: receiverId || contract.contractId, + actions: actions.map((action) => (0, wallet_utils_1.createAction)(action)), + walletCallbackUrl: callbackUrl, + }); + }, + async signAndSendTransactions({ transactions, callbackUrl }) { + logger.log("signAndSendTransactions", { transactions, callbackUrl }); + if (!_state.wallet.isSignedIn()) { + throw new Error("Wallet not signed in"); + } + return _state.wallet.requestSignTransactions({ + transactions: await transformTransactions(transactions), + callbackUrl, + }); + }, + buildImportAccountsUrl() { + return `${params.walletUrl}/batch-import`; + }, + }; +}; +function setupMyNearWallet({ walletUrl, iconUrl = icon_1.default, deprecated = false, successUrl = "", failureUrl = "", } = {}) { + return async (moduleOptions) => { + return { + id: "my-near-wallet", + type: "browser", + metadata: { + name: "MyNearWallet", + description: "NEAR wallet to store, buy, send and stake assets for DeFi.", + iconUrl, + deprecated, + available: true, + successUrl, + failureUrl, + walletUrl: resolveWalletUrl(moduleOptions.options.network, walletUrl), + }, + init: (options) => { + return MyNearWallet({ + ...options, + params: { + walletUrl: resolveWalletUrl(options.options.network, walletUrl), + }, + }); + }, + }; + }; +} diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/index.d.ts b/packages/my-near-wallet/dist/cjs/wallet-utils/src/index.d.ts new file mode 100644 index 000000000..9b70859cc --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/index.d.ts @@ -0,0 +1,2 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/index.d.ts.map b/packages/my-near-wallet/dist/cjs/wallet-utils/src/index.d.ts.map new file mode 100644 index 000000000..0d9c8c9c2 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../wallet-utils/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/index.js b/packages/my-near-wallet/dist/cjs/wallet-utils/src/index.js new file mode 100644 index 000000000..309bdb658 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = exports.createAction = void 0; +var wallet_utils_1 = require("./lib/wallet-utils"); +Object.defineProperty(exports, "createAction", { enumerable: true, get: function () { return wallet_utils_1.createAction; } }); +Object.defineProperty(exports, "signTransactions", { enumerable: true, get: function () { return wallet_utils_1.signTransactions; } }); diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/create-action.d.ts b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/create-action.d.ts new file mode 100644 index 000000000..da65b4629 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/create-action.d.ts @@ -0,0 +1,4 @@ +import * as nearAPI from "near-api-js"; +import type { Action } from "@near-wallet-selector/core"; +export declare const createAction: (action: Action) => nearAPI.transactions.Action; +//# sourceMappingURL=create-action.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map new file mode 100644 index 000000000..fe8487b52 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"create-action.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/create-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgB3E,eAAO,MAAM,YAAY,WAAY,MAAM,gCAqD1C,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/create-action.js b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/create-action.js new file mode 100644 index 000000000..b4a01ef64 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/create-action.js @@ -0,0 +1,78 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createAction = void 0; +const nearAPI = __importStar(require("near-api-js")); +const { transactions, utils } = nearAPI; +const getAccessKey = (permission) => { + if (permission === "FullAccess") { + return transactions.fullAccessKey(); + } + const { receiverId, methodNames = [] } = permission; + const allowance = permission.allowance + ? BigInt(permission.allowance) + : undefined; + return transactions.functionCallAccessKey(receiverId, methodNames, allowance); +}; +const createAction = (action) => { + switch (action.type) { + case "CreateAccount": + return transactions.createAccount(); + case "DeployContract": { + const { code } = action.params; + return transactions.deployContract(code); + } + case "FunctionCall": { + const { methodName, args, gas, deposit } = action.params; + console.log('alohaws action', action); + return transactions.functionCall(methodName, args, BigInt(gas), BigInt(deposit)); + } + case "Transfer": { + const { deposit } = action.params; + return transactions.transfer(BigInt(deposit)); + } + case "Stake": { + const { stake, publicKey } = action.params; + return transactions.stake(BigInt(stake), utils.PublicKey.from(publicKey)); + } + case "AddKey": { + const { publicKey, accessKey } = action.params; + return transactions.addKey(utils.PublicKey.from(publicKey), + // TODO: Use accessKey.nonce? near-api-js seems to think 0 is fine? + getAccessKey(accessKey.permission)); + } + case "DeleteKey": { + const { publicKey } = action.params; + return transactions.deleteKey(utils.PublicKey.from(publicKey)); + } + case "DeleteAccount": { + const { beneficiaryId } = action.params; + return transactions.deleteAccount(beneficiaryId); + } + default: + throw new Error("Invalid action type"); + } +}; +exports.createAction = createAction; diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts new file mode 100644 index 000000000..fd0b85445 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts @@ -0,0 +1,5 @@ +import type { Signer } from "@near-js/signers"; +import type { SignedTransaction } from "@near-js/transactions"; +import type { Network, Transaction } from "@near-wallet-selector/core/src"; +export declare const signTransactions: (transactions: Array, signer: Signer, network: Network) => Promise; +//# sourceMappingURL=sign-transactions.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map new file mode 100644 index 000000000..9624b4968 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sign-transactions.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/sign-transactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAIzE,eAAO,MAAM,gBAAgB,iBACb,KAAK,CAAC,WAAW,CAAC,UACxB,MAAM,WACL,OAAO,iCAoDjB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/sign-transactions.js b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/sign-transactions.js new file mode 100644 index 000000000..c8c3b6519 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/sign-transactions.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = void 0; +const crypto_1 = require("@near-js/crypto"); +const transactions_1 = require("@near-js/transactions"); +const utils_1 = require("@near-js/utils"); +// import * as nearAPI from "near-api-js"; +const providers_1 = require("@near-js/providers"); +const create_action_1 = require("./create-action"); +const signTransactions = async (transactions, signer, network) => { + const provider = new providers_1.JsonRpcProvider({ + url: network.nodeUrl, + }); + const signedTransactions = []; + for (let i = 0; i < transactions.length; i++) { + const publicKey = await signer.getPublicKey(transactions[i].signerId, network.networkId); + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transactions[i].signerId, + public_key: publicKey.toString(), + }), + ]); + const actions = transactions[i].actions.map((action) => (0, create_action_1.createAction)(action)); + const transaction = (0, transactions_1.createTransaction)(transactions[i].signerId, new crypto_1.PublicKey({ + keyType: crypto_1.KeyType.ED25519, + data: publicKey.data + }), + // PublicKey.from(publicKey.toString()), + transactions[i].receiverId, accessKey.nonce + i + 1, actions, (0, utils_1.baseDecode)(block.header.hash)); + const response = await (0, transactions_1.signTransaction)(transaction, signer, transactions[i].signerId, network.networkId); + signedTransactions.push(response[1]); + } + return signedTransactions; +}; +exports.signTransactions = signTransactions; diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts new file mode 100644 index 000000000..ca97d2268 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts @@ -0,0 +1,4 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; +//# sourceMappingURL=wallet-utils.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map new file mode 100644 index 000000000..209167ee4 --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/wallet-utils.js b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/wallet-utils.js new file mode 100644 index 000000000..1d0db17bd --- /dev/null +++ b/packages/my-near-wallet/dist/cjs/wallet-utils/src/lib/wallet-utils.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = exports.createAction = void 0; +const create_action_1 = require("./create-action"); +Object.defineProperty(exports, "createAction", { enumerable: true, get: function () { return create_action_1.createAction; } }); +const sign_transactions_1 = require("./sign-transactions"); +Object.defineProperty(exports, "signTransactions", { enumerable: true, get: function () { return sign_transactions_1.signTransactions; } }); diff --git a/packages/my-near-wallet/dist/esm/core/src/index.d.ts b/packages/my-near-wallet/dist/esm/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/index.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/index.js b/packages/my-near-wallet/dist/esm/core/src/index.js new file mode 100644 index 000000000..a545ffa59 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/index.js @@ -0,0 +1,5 @@ +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export { EventEmitter } from "./lib/services"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/constants.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/constants.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/constants.js b/packages/my-near-wallet/dist/esm/core/src/lib/constants.js new file mode 100644 index 000000000..a75f1a50e --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/constants.js @@ -0,0 +1,11 @@ +export const PACKAGE_NAME = "near-wallet-selector"; +export const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export const REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +export const CONTRACT = "contract"; +export const PENDING_CONTRACT = "contract:pending"; +export const SELECTED_WALLET_ID = `selectedWalletId`; +export const PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/detect-browser.js b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..c4e583914 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,70 @@ +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +export const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.js b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..b2db314cb --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,3 @@ +export const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/index.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/index.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/index.js b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/index.js new file mode 100644 index 000000000..69aaf908c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/index.js @@ -0,0 +1,5 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.js b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..f2a7f147e --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,97 @@ +import { serialize } from "borsh"; +export const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +export const payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +export const serializeNep413 = (signMessageParams) => { + const payload = createPayload(signMessageParams); + return Buffer.from(serialize(payloadSchema, payload)); +}; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..f08e83f02 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,39 @@ +import { serialize } from "borsh"; +import { sha256 } from "js-sha256"; +import { payloadSchema } from "./payload"; +import { publicKeyFrom } from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import { JsonRpcProvider } from "@near-js/providers"; +export const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = serialize(payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = publicKeyFrom(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +export const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/helpers/waitFor.js b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..55fc5398f --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/helpers/waitFor.js @@ -0,0 +1,22 @@ +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +export const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/ar.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/bg.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/en.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/es.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/hi.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/hr.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/ko.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/mk.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/sl.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/sr.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/vi.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/locale/zh.json b/packages/my-near-wallet/dist/esm/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/options.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/options.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/options.js b/packages/my-near-wallet/dist/esm/core/src/lib/options.js new file mode 100644 index 000000000..fa6b65f26 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/options.js @@ -0,0 +1,40 @@ +import { WebStorageService } from "./services"; +export const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +export const resolveNetwork = (network) => { + return typeof network === "string" ? getNetworkPreset(network) : network; +}; +export const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: resolveNetwork(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new WebStorageService(), + }; +}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/options.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/options.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/options.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/options.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/options.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..304200d75 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,16 @@ +import { EventEmitter as NEventEmitter } from "events"; +export class EventEmitter { + emitter = new NEventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/index.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/index.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/index.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/index.js new file mode 100644 index 000000000..5301a0f98 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/index.js @@ -0,0 +1,11 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..d1ca57bc4 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,32 @@ +export class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +export const logger = new Logger(); diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..bfcf13b62 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,43 @@ +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +export class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new JsonRpcProvider({ url })) + : []; + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..a9175d614 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,25 @@ +const KEY_DELIMITER = ":"; +export class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..3b6ee32f5 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,20 @@ +export class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..d5aa498d4 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,321 @@ +import { EventEmitter } from "../event-emitter/event-emitter.service"; +import { Logger, logger } from "../logger/logger.service"; +import { RECENTLY_SIGNED_IN_WALLETS, PACKAGE_NAME, PENDING_CONTRACT, PENDING_SELECTED_WALLET_ID, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "../../constants"; +import { JsonStorage } from "../storage/json-storage.service"; +export class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger.log(`Failed to validate ${wallet.id} during setup`); + logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger.log("Failed to sign out existing wallet"); + logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger.log(`Failed to sign out ${wallet.id}`); + logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new Logger(module.id), + storage: new JsonStorage(this.storage, [PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger.log("Failed to setup module"); + logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger.error("Failed to sign in to wallet. " + err); + } + } + } +} diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/store.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/store.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/store.js b/packages/my-near-wallet/dist/esm/core/src/lib/store.js new file mode 100644 index 000000000..32dc79078 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/store.js @@ -0,0 +1,154 @@ +import { Subject, BehaviorSubject, scan } from "rxjs"; +import { logger, JsonStorage } from "./services"; +import { PACKAGE_NAME, CONTRACT, SELECTED_WALLET_ID, RECENTLY_SIGNED_IN_WALLETS, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "./constants"; +const reducer = (state, action) => { + logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? REMEMBER_RECENT_WALLETS_STATE.DISABLED + : REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +export const createStore = async (storage) => { + const jsonStorage = new JsonStorage(storage, PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(CONTRACT), + selectedWalletId: await jsonStorage.getItem(SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new BehaviorSubject(initialState); + const actions$ = new Subject(); + actions$.pipe(scan(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, CONTRACT, "contract"); + syncStorage(prevState, state, RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/store.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/store.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/store.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/store.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/store.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/testUtils.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/testUtils.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/testUtils.js b/packages/my-near-wallet/dist/esm/core/src/lib/testUtils.js new file mode 100644 index 000000000..7e90e1ce8 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/testUtils.js @@ -0,0 +1,103 @@ +// Remove Jest import +// import * as jest from "jest"; +import { mock } from "jest-mock-extended"; +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, WalletModules } from "./services"; +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +export const mockWallet = async (factory, deps) => { + const { options, storage } = resolveOptions({ + network: getNetworkPreset("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new EventEmitter(); + const store = await createStore(storage); + const walletModules = new WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || mock(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/translate/translate.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/translate/translate.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/translate/translate.js b/packages/my-near-wallet/dist/esm/core/src/lib/translate/translate.js new file mode 100644 index 000000000..610c02a94 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/translate/translate.js @@ -0,0 +1,73 @@ +import en from "../locale/en.json"; +import es from "../locale/es.json"; +import zh from "../locale/zh.json"; +import bg from "../locale/bg.json"; +import ko from "../locale/ko.json"; +import vi from "../locale/vi.json"; +import hi from "../locale/hi.json"; +import ar from "../locale/ar.json"; +import hr from "../locale/hr.json"; +import mk from "../locale/mk.json"; +import sl from "../locale/sl.json"; +import sr from "../locale/sr.json"; +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en; + case "es": + return es; + case "zh": + return zh; + case "bg": + return bg; + case "ko": + return ko; + case "vi": + return vi; + case "hi": + return hi; + case "ar": + return ar; + case "hr": + return hr; + case "mk": + return mk; + case "sl": + return sl; + case "sr": + return sr; + default: + return en; + } +}; +let chosenLang; +export const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +export const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/utils.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/utils.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/utils.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/utils.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/utils.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.js b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..af67afbb6 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.js @@ -0,0 +1,79 @@ +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, Logger, WalletModules, Provider } from "./services"; +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export const setupWalletSelector = async (params) => { + const { options, storage } = resolveOptions(params); + Logger.debug = options.debug; + const emitter = new EventEmitter(); + const store = await createStore(storage); + const network = await getNetworkPreset(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet-selector.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet/index.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet/index.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet/index.js b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/index.js new file mode 100644 index 000000000..bd35cba8b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/index.js @@ -0,0 +1,2 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet/transactions.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/transactions.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/core/src/lib/wallet/wallet.types.js b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/my-near-wallet/dist/esm/core/src/lib/wallet/wallet.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/my-near-wallet/dist/esm/my-near-wallet/src/index.d.ts b/packages/my-near-wallet/dist/esm/my-near-wallet/src/index.d.ts new file mode 100644 index 000000000..1cfb7b4f7 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/my-near-wallet/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupMyNearWallet } from "./lib/my-near-wallet.js"; +export type { MyNearWalletParams } from "./lib/my-near-wallet.js"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/my-near-wallet/src/index.d.ts.map b/packages/my-near-wallet/dist/esm/my-near-wallet/src/index.d.ts.map new file mode 100644 index 000000000..4b4528b7c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/my-near-wallet/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/my-near-wallet/src/index.js b/packages/my-near-wallet/dist/esm/my-near-wallet/src/index.js new file mode 100644 index 000000000..a4b623a1d --- /dev/null +++ b/packages/my-near-wallet/dist/esm/my-near-wallet/src/index.js @@ -0,0 +1 @@ +export { setupMyNearWallet } from "./lib/my-near-wallet.js"; diff --git a/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/icon.d.ts b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/icon.d.ts new file mode 100644 index 000000000..7cf9a6062 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/png;base64,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"; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/icon.d.ts.map b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/icon.d.ts.map new file mode 100644 index 000000000..359bd883f --- /dev/null +++ b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAA4wiB"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/icon.js b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/icon.js new file mode 100644 index 000000000..5b5c66f8f --- /dev/null +++ b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/icon.js @@ -0,0 +1 @@ +export default `data:image/png;base64,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`; diff --git a/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/my-near-wallet.d.ts b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/my-near-wallet.d.ts new file mode 100644 index 000000000..e863dae1c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/my-near-wallet.d.ts @@ -0,0 +1,10 @@ +import type { WalletModuleFactory, BrowserWallet } from "@near-wallet-selector/core"; +export interface MyNearWalletParams { + walletUrl?: string; + iconUrl?: string; + deprecated?: boolean; + successUrl?: string; + failureUrl?: string; +} +export declare function setupMyNearWallet({ walletUrl, iconUrl, deprecated, successUrl, failureUrl, }?: MyNearWalletParams): WalletModuleFactory; +//# sourceMappingURL=my-near-wallet.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/my-near-wallet.d.ts.map b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/my-near-wallet.d.ts.map new file mode 100644 index 000000000..aff4d33df --- /dev/null +++ b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/my-near-wallet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"my-near-wallet.d.ts","sourceRoot":"","sources":["../../../../../src/lib/my-near-wallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EAEnB,aAAa,EAKd,MAAM,4BAA4B,CAAC;AASpC,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqOD,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,OAAc,EACd,UAAkB,EAClB,UAAe,EACf,UAAe,GAChB,GAAE,kBAAuB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CA0B9D"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/my-near-wallet.js b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/my-near-wallet.js new file mode 100644 index 000000000..32341e43e --- /dev/null +++ b/packages/my-near-wallet/dist/esm/my-near-wallet/src/lib/my-near-wallet.js @@ -0,0 +1,175 @@ +import { WalletConnection } from "@near-js/wallet-account"; +import { BrowserLocalStorageKeyStore } from "@near-js/keystores-browser"; +import { createTransaction } from "@near-js/transactions"; +import { baseDecode } from "@near-js/utils"; +import { PublicKey } from "@near-js/crypto"; +import { connect } from "near-api-js"; +import { createAction } from "@near-wallet-selector/wallet-utils"; +import icon from "./icon"; +const resolveWalletUrl = (network, walletUrl) => { + if (walletUrl) { + return walletUrl; + } + switch (network.networkId) { + case "mainnet": + return "https://app.mynearwallet.com"; + case "testnet": + return "https://testnet.mynearwallet.com"; + default: + throw new Error("Invalid wallet url"); + } +}; +const setupWalletState = async (params, network) => { + const keyStore = new BrowserLocalStorageKeyStore(); + const near = await connect({ + keyStore, + // deps: { keyStore }, + walletUrl: params.walletUrl, + ...network, + headers: {}, + }); + const wallet = new WalletConnection(near, "near_app"); + return { + wallet, + keyStore, + }; +}; +const MyNearWallet = async ({ metadata, options, store, params, logger, id }) => { + const _state = await setupWalletState(params, options.network); + const getAccounts = async () => { + const accountId = _state.wallet.getAccountId(); + const account = _state.wallet.account(); + if (!accountId || !account) { + return []; + } + const publicKey = await account.connection.signer.getPublicKey(account.accountId, options.network.networkId); + return [ + { + accountId, + publicKey: publicKey ? publicKey.toString() : "", + }, + ]; + }; + const transformTransactions = async (transactions) => { + const account = _state.wallet.account(); + const { networkId, signer, provider } = account.connection; + const localKey = await signer.getPublicKey(account.accountId, networkId); + return Promise.all(transactions.map(async (transaction, index) => { + const actions = transaction.actions.map((action) => createAction(action)); + const accessKey = await account.accessKeyForTransaction(transaction.receiverId, actions, localKey); + if (!accessKey) { + throw new Error(`Failed to find matching key for transaction sent to ${transaction.receiverId}`); + } + const block = await provider.block({ finality: "final" }); + const nonce = accessKey.access_key.nonce + BigInt(index + 1); + return createTransaction(account.accountId, PublicKey.from(accessKey.public_key), transaction.receiverId, nonce, actions, baseDecode(block.header.hash)); + })); + }; + return { + async signIn({ contractId, methodNames, successUrl, failureUrl }) { + const existingAccounts = await getAccounts(); + if (existingAccounts.length) { + return existingAccounts; + } + await _state.wallet.requestSignIn({ + contractId, + methodNames, + successUrl, + failureUrl, + keyType: "ed25519", + }); + return getAccounts(); + }, + async signOut() { + if (_state.wallet.isSignedIn()) { + _state.wallet.signOut(); + } + }, + async getAccounts() { + return getAccounts(); + }, + async verifyOwner() { + throw new Error(`Method not supported by ${metadata.name}`); + }, + async signMessage({ message, nonce, recipient, callbackUrl, state }) { + logger.log("sign message", { message }); + if (id !== "my-near-wallet") { + throw Error(`The signMessage method is not supported by ${metadata.name}`); + } + const locationUrl = typeof window !== "undefined" ? window.location.href : ""; + const url = callbackUrl || locationUrl; + if (!url) { + throw new Error(`The callbackUrl is missing for ${metadata.name}`); + } + const href = new URL(params.walletUrl); + href.pathname = "sign-message"; + href.searchParams.append("message", message); + href.searchParams.append("nonce", nonce.toString("base64")); + href.searchParams.append("recipient", recipient); + href.searchParams.append("callbackUrl", url); + if (state) { + href.searchParams.append("state", state); + } + window.location.replace(href.toString()); + return; + }, + async signAndSendTransaction({ signerId, receiverId, actions, callbackUrl, }) { + // console.log('alohaws mnw signAndSendTransaction', signerId, receiverId, actions, callbackUrl) + logger.log("signAndSendTransaction", { + signerId, + receiverId, + actions, + callbackUrl, + }); + const { contract } = store.getState(); + if (!_state.wallet.isSignedIn() || !contract) { + throw new Error("Wallet not signed in"); + } + const account = _state.wallet.account(); + return account["signAndSendTransaction"]({ + receiverId: receiverId || contract.contractId, + actions: actions.map((action) => createAction(action)), + walletCallbackUrl: callbackUrl, + }); + }, + async signAndSendTransactions({ transactions, callbackUrl }) { + logger.log("signAndSendTransactions", { transactions, callbackUrl }); + if (!_state.wallet.isSignedIn()) { + throw new Error("Wallet not signed in"); + } + return _state.wallet.requestSignTransactions({ + transactions: await transformTransactions(transactions), + callbackUrl, + }); + }, + buildImportAccountsUrl() { + return `${params.walletUrl}/batch-import`; + }, + }; +}; +export function setupMyNearWallet({ walletUrl, iconUrl = icon, deprecated = false, successUrl = "", failureUrl = "", } = {}) { + return async (moduleOptions) => { + return { + id: "my-near-wallet", + type: "browser", + metadata: { + name: "MyNearWallet", + description: "NEAR wallet to store, buy, send and stake assets for DeFi.", + iconUrl, + deprecated, + available: true, + successUrl, + failureUrl, + walletUrl: resolveWalletUrl(moduleOptions.options.network, walletUrl), + }, + init: (options) => { + return MyNearWallet({ + ...options, + params: { + walletUrl: resolveWalletUrl(options.options.network, walletUrl), + }, + }); + }, + }; + }; +} diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/index.d.ts b/packages/my-near-wallet/dist/esm/wallet-utils/src/index.d.ts new file mode 100644 index 000000000..9b70859cc --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/index.d.ts @@ -0,0 +1,2 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/index.d.ts.map b/packages/my-near-wallet/dist/esm/wallet-utils/src/index.d.ts.map new file mode 100644 index 000000000..0d9c8c9c2 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../wallet-utils/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/index.js b/packages/my-near-wallet/dist/esm/wallet-utils/src/index.js new file mode 100644 index 000000000..27b22f6ee --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/index.js @@ -0,0 +1 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/create-action.d.ts b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/create-action.d.ts new file mode 100644 index 000000000..da65b4629 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/create-action.d.ts @@ -0,0 +1,4 @@ +import * as nearAPI from "near-api-js"; +import type { Action } from "@near-wallet-selector/core"; +export declare const createAction: (action: Action) => nearAPI.transactions.Action; +//# sourceMappingURL=create-action.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/create-action.d.ts.map b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/create-action.d.ts.map new file mode 100644 index 000000000..fe8487b52 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/create-action.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"create-action.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/create-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgB3E,eAAO,MAAM,YAAY,WAAY,MAAM,gCAqD1C,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/create-action.js b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/create-action.js new file mode 100644 index 000000000..d49ee0465 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/create-action.js @@ -0,0 +1,51 @@ +import * as nearAPI from "near-api-js"; +const { transactions, utils } = nearAPI; +const getAccessKey = (permission) => { + if (permission === "FullAccess") { + return transactions.fullAccessKey(); + } + const { receiverId, methodNames = [] } = permission; + const allowance = permission.allowance + ? BigInt(permission.allowance) + : undefined; + return transactions.functionCallAccessKey(receiverId, methodNames, allowance); +}; +export const createAction = (action) => { + switch (action.type) { + case "CreateAccount": + return transactions.createAccount(); + case "DeployContract": { + const { code } = action.params; + return transactions.deployContract(code); + } + case "FunctionCall": { + const { methodName, args, gas, deposit } = action.params; + console.log('alohaws action', action); + return transactions.functionCall(methodName, args, BigInt(gas), BigInt(deposit)); + } + case "Transfer": { + const { deposit } = action.params; + return transactions.transfer(BigInt(deposit)); + } + case "Stake": { + const { stake, publicKey } = action.params; + return transactions.stake(BigInt(stake), utils.PublicKey.from(publicKey)); + } + case "AddKey": { + const { publicKey, accessKey } = action.params; + return transactions.addKey(utils.PublicKey.from(publicKey), + // TODO: Use accessKey.nonce? near-api-js seems to think 0 is fine? + getAccessKey(accessKey.permission)); + } + case "DeleteKey": { + const { publicKey } = action.params; + return transactions.deleteKey(utils.PublicKey.from(publicKey)); + } + case "DeleteAccount": { + const { beneficiaryId } = action.params; + return transactions.deleteAccount(beneficiaryId); + } + default: + throw new Error("Invalid action type"); + } +}; diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts new file mode 100644 index 000000000..fd0b85445 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts @@ -0,0 +1,5 @@ +import type { Signer } from "@near-js/signers"; +import type { SignedTransaction } from "@near-js/transactions"; +import type { Network, Transaction } from "@near-wallet-selector/core/src"; +export declare const signTransactions: (transactions: Array, signer: Signer, network: Network) => Promise; +//# sourceMappingURL=sign-transactions.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map new file mode 100644 index 000000000..9624b4968 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sign-transactions.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/sign-transactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAIzE,eAAO,MAAM,gBAAgB,iBACb,KAAK,CAAC,WAAW,CAAC,UACxB,MAAM,WACL,OAAO,iCAoDjB,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/sign-transactions.js b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/sign-transactions.js new file mode 100644 index 000000000..d7d30548c --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/sign-transactions.js @@ -0,0 +1,34 @@ +import { KeyType, PublicKey } from "@near-js/crypto"; +import { createTransaction, signTransaction } from "@near-js/transactions"; +import { baseDecode } from "@near-js/utils"; +// import * as nearAPI from "near-api-js"; +import { JsonRpcProvider } from "@near-js/providers"; +import { createAction } from "./create-action"; +export const signTransactions = async (transactions, signer, network) => { + const provider = new JsonRpcProvider({ + url: network.nodeUrl, + }); + const signedTransactions = []; + for (let i = 0; i < transactions.length; i++) { + const publicKey = await signer.getPublicKey(transactions[i].signerId, network.networkId); + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transactions[i].signerId, + public_key: publicKey.toString(), + }), + ]); + const actions = transactions[i].actions.map((action) => createAction(action)); + const transaction = createTransaction(transactions[i].signerId, new PublicKey({ + keyType: KeyType.ED25519, + data: publicKey.data + }), + // PublicKey.from(publicKey.toString()), + transactions[i].receiverId, accessKey.nonce + i + 1, actions, baseDecode(block.header.hash)); + const response = await signTransaction(transaction, signer, transactions[i].signerId, network.networkId); + signedTransactions.push(response[1]); + } + return signedTransactions; +}; diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts new file mode 100644 index 000000000..ca97d2268 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts @@ -0,0 +1,4 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; +//# sourceMappingURL=wallet-utils.d.ts.map \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map new file mode 100644 index 000000000..209167ee4 --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/wallet-utils.js b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/wallet-utils.js new file mode 100644 index 000000000..d5a53e83f --- /dev/null +++ b/packages/my-near-wallet/dist/esm/wallet-utils/src/lib/wallet-utils.js @@ -0,0 +1,3 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; diff --git a/packages/my-near-wallet/go.js b/packages/my-near-wallet/go.js new file mode 100644 index 000000000..ebd8d48e9 --- /dev/null +++ b/packages/my-near-wallet/go.js @@ -0,0 +1,3 @@ +const { setupMyNearWallet } = require('./dist/cjs/my-near-wallet/src/index') + +console.log('aloha setupMyNearWallet', setupMyNearWallet) diff --git a/packages/my-near-wallet/jest.config.ts b/packages/my-near-wallet/jest.config.ts index 7eee1c2ae..670d0b70f 100644 --- a/packages/my-near-wallet/jest.config.ts +++ b/packages/my-near-wallet/jest.config.ts @@ -7,7 +7,7 @@ export default { "^.+\\.[tj]s$": [ "ts-jest", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", }, ], }, diff --git a/packages/my-near-wallet/package.json b/packages/my-near-wallet/package.json index 12f11f6d9..ba80f4a85 100644 --- a/packages/my-near-wallet/package.json +++ b/packages/my-near-wallet/package.json @@ -2,6 +2,45 @@ "name": "@near-wallet-selector/my-near-wallet", "version": "8.9.13", "description": "My Near Wallet package for NEAR Wallet Selector.", + "scripts": { + "compile:esm": "yarn tsc -p tsconfig.esm.json", + "compile:cjs": "yarn tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/my-near-wallet/src/index.d.ts", + "main": "./dist/cjs/my-near-wallet/src/index.js", + "module": "./dist/esm/my-near-wallet/src/index.js", + "type": "module", + "dependencies": { + "@near-js/crypto": "*", + "@near-js/keystores-browser": "*", + "@near-js/signers": "*", + "@near-js/transactions": "*", + "@near-js/utils": "*", + "@near-js/wallet-account": "*", + "@near-wallet-selector/core": "workspace:*", + "@near-wallet-selector/wallet-utils": "workspace:*" + }, + "devDependencies": { + "@near-js/types": "*", + "@types/jest": "*", + "@types/node": "*", + "jest": "*", + "jest-mock-extended": "*", + "near-api-js": "*", + "rimraf": "6.0.1", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/my-near-wallet/src/index.js", + "import": "./dist/esm/my-near-wallet/src/index.js" + } + }, "keywords": [ "near", "blockchain", diff --git a/packages/my-near-wallet/project.json b/packages/my-near-wallet/project.json deleted file mode 100644 index 563dc4869..000000000 --- a/packages/my-near-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "my-near-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/my-near-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/my-near-wallet", - "tsConfig": "packages/my-near-wallet/tsconfig.lib.json", - "project": "packages/my-near-wallet/package.json", - "entryFile": "packages/my-near-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/my-near-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/my-near-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/my-near-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/my-near-wallet"], - "options": { - "jestConfig": "packages/my-near-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["browser-wallet"] -} diff --git a/packages/my-near-wallet/src/index.ts b/packages/my-near-wallet/src/index.ts index d80c13152..0b66534b3 100644 --- a/packages/my-near-wallet/src/index.ts +++ b/packages/my-near-wallet/src/index.ts @@ -1,2 +1,2 @@ -export { setupMyNearWallet } from "./lib/my-near-wallet"; -export type { MyNearWalletParams } from "./lib/my-near-wallet"; +export { setupMyNearWallet } from "./lib/my-near-wallet.js"; +export type { MyNearWalletParams } from "./lib/my-near-wallet.js"; diff --git a/packages/my-near-wallet/src/lib/my-near-wallet.ts b/packages/my-near-wallet/src/lib/my-near-wallet.ts index 5ac291a8d..501afaa91 100644 --- a/packages/my-near-wallet/src/lib/my-near-wallet.ts +++ b/packages/my-near-wallet/src/lib/my-near-wallet.ts @@ -1,4 +1,5 @@ -import * as nearAPI from "near-api-js"; +import { WalletConnection } from "@near-js/wallet-account"; +import { BrowserLocalStorageKeyStore } from "@near-js/keystores-browser"; import type { WalletModuleFactory, WalletBehaviourFactory, @@ -8,6 +9,11 @@ import type { Network, Account, } from "@near-wallet-selector/core"; + +import { createTransaction } from "@near-js/transactions"; +import { baseDecode } from "@near-js/utils"; +import { PublicKey } from "@near-js/crypto"; +import { connect } from "near-api-js"; import { createAction } from "@near-wallet-selector/wallet-utils"; import icon from "./icon"; @@ -20,8 +26,8 @@ export interface MyNearWalletParams { } interface MyNearWalletState { - wallet: nearAPI.WalletConnection; - keyStore: nearAPI.keyStores.BrowserLocalStorageKeyStore; + wallet: WalletConnection; + keyStore: BrowserLocalStorageKeyStore; } interface MyNearWalletExtraOptions { @@ -47,16 +53,17 @@ const setupWalletState = async ( params: MyNearWalletExtraOptions, network: Network ): Promise => { - const keyStore = new nearAPI.keyStores.BrowserLocalStorageKeyStore(); + const keyStore = new BrowserLocalStorageKeyStore(); - const near = await nearAPI.connect({ + const near = await connect({ keyStore, + // deps: { keyStore }, walletUrl: params.walletUrl, ...network, headers: {}, }); - const wallet = new nearAPI.WalletConnection(near, "near_app"); + const wallet = new WalletConnection(near, "near_app"); return { wallet, @@ -118,13 +125,13 @@ const MyNearWallet: WalletBehaviourFactory< const nonce = accessKey.access_key.nonce + BigInt(index + 1); - return nearAPI.transactions.createTransaction( + return createTransaction( account.accountId, - nearAPI.utils.PublicKey.from(accessKey.public_key), + PublicKey.from(accessKey.public_key), transaction.receiverId, nonce, actions, - nearAPI.utils.serialize.base_decode(block.header.hash) + baseDecode(block.header.hash) ); }) ); @@ -143,6 +150,7 @@ const MyNearWallet: WalletBehaviourFactory< methodNames, successUrl, failureUrl, + keyType: "ed25519", }); return getAccounts(); @@ -201,6 +209,8 @@ const MyNearWallet: WalletBehaviourFactory< actions, callbackUrl, }) { + // console.log('alohaws mnw signAndSendTransaction', signerId, receiverId, actions, callbackUrl) + logger.log("signAndSendTransaction", { signerId, receiverId, diff --git a/packages/my-near-wallet/src/lib/my-near-wallet.spec.ts b/packages/my-near-wallet/test/my-near-wallet.spec.ts similarity index 92% rename from packages/my-near-wallet/src/lib/my-near-wallet.spec.ts rename to packages/my-near-wallet/test/my-near-wallet.spec.ts index 9c84817b6..44a4f42b2 100644 --- a/packages/my-near-wallet/src/lib/my-near-wallet.spec.ts +++ b/packages/my-near-wallet/test/my-near-wallet.spec.ts @@ -1,15 +1,15 @@ -/* eslint-disable @nx/enforce-module-boundaries */ import type { Near, WalletConnection, ConnectedWalletAccount, } from "near-api-js"; -import type { AccountView } from "near-api-js/lib/providers/provider"; +import type { AccountView } from "@near-js/types"; import { mock } from "jest-mock-extended"; -import { mockWallet } from "../../../core/src/lib/testUtils"; -import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; -import type { BrowserWallet } from "../../../core/src/lib/wallet"; +// import { mockWallet } from "../../../core/src/lib/testUtils"; +import { mockWallet } from "@near-wallet-selector/core/src/lib/testUtils"; +import type { MockWalletDependencies } from "@near-wallet-selector/core/src/lib/testUtils"; +import type { BrowserWallet } from "@near-wallet-selector/core"; const createMyNearWallet = async (deps: MockWalletDependencies = {}) => { const walletConnection = mock(); diff --git a/packages/my-near-wallet/tsconfig.cjs.json b/packages/my-near-wallet/tsconfig.cjs.json new file mode 100644 index 000000000..9f12707d4 --- /dev/null +++ b/packages/my-near-wallet/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/my-near-wallet/tsconfig.esm.json b/packages/my-near-wallet/tsconfig.esm.json new file mode 100644 index 000000000..a51c6f15e --- /dev/null +++ b/packages/my-near-wallet/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/my-near-wallet/tsconfig.json b/packages/my-near-wallet/tsconfig.json index 8b6d6acaf..e164858c5 100644 --- a/packages/my-near-wallet/tsconfig.json +++ b/packages/my-near-wallet/tsconfig.json @@ -1,19 +1,13 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" + "module": "ESNext", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*"] } - ] + }, + "include": ["src/**/*"] } diff --git a/packages/my-near-wallet/tsconfig.lib.json b/packages/my-near-wallet/tsconfig.lib.json deleted file mode 100644 index b3f90c22f..000000000 --- a/packages/my-near-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/my-near-wallet/tsconfig.spec.json b/packages/my-near-wallet/tsconfig.spec.json deleted file mode 100644 index 546f12877..000000000 --- a/packages/my-near-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} diff --git a/packages/narwallets/.babelrc b/packages/narwallets/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/narwallets/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/narwallets/.eslintrc.json b/packages/narwallets/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/narwallets/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/narwallets/README.md b/packages/narwallets/README.md deleted file mode 100644 index 43ca18b0c..000000000 --- a/packages/narwallets/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# @near-wallet-selector/narwallets - -This is the [Narwallets](https://chrome.google.com/webstore/detail/narwallets-v4/lkpeokpdkmcdaiadpmnnpimlgmdobkdj) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry: - -```bash -# Using Yarn -yarn add @near-wallet-selector/narwallets - -# Using NPM. -npm install @near-wallet-selector/narwallets -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupNarwallets } from "@near-wallet-selector/narwallets"; - -// Narwallets for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const narwallets = setupNarwallets({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [narwallets], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/narwallets-logo.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupNarwallets } from "@near-wallet-selector/narwallets"; -import narwalletsIconUrl from "@near-wallet-selector/narwallets/assets/narwallets-icon.png"; - -const narwallets = setupNarwallets({ - iconUrl: narwalletsIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/narwallets/assets/narwallets-logo.png b/packages/narwallets/assets/narwallets-logo.png deleted file mode 100644 index 58c56af9c..000000000 Binary files a/packages/narwallets/assets/narwallets-logo.png and /dev/null differ diff --git a/packages/narwallets/jest.config.ts b/packages/narwallets/jest.config.ts deleted file mode 100644 index 28d13a2f4..000000000 --- a/packages/narwallets/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -module.exports = { - displayName: "narwallets", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]sx?$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/narwallets", -}; diff --git a/packages/narwallets/package.json b/packages/narwallets/package.json deleted file mode 100644 index 3263a0848..000000000 --- a/packages/narwallets/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@near-wallet-selector/narwallets", - "version": "8.9.13", - "description": "This is the Narwallets package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "narwallets" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/narwallets" -} diff --git a/packages/narwallets/project.json b/packages/narwallets/project.json deleted file mode 100644 index 584a00ac4..000000000 --- a/packages/narwallets/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "narwallets", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/narwallets/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/narwallets", - "tsConfig": "packages/narwallets/tsconfig.lib.json", - "project": "packages/narwallets/package.json", - "entryFile": "packages/narwallets/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/narwallets/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/narwallets/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/narwallets/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/narwallets"], - "options": { - "jestConfig": "packages/narwallets/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/narwallets/src/index.ts b/packages/narwallets/src/index.ts deleted file mode 100644 index 6999f5ddf..000000000 --- a/packages/narwallets/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupNarwallets } from "./lib/narwallets"; -export type { NarwalletsParams } from "./lib/narwallets"; diff --git a/packages/narwallets/src/lib/icon.ts b/packages/narwallets/src/lib/icon.ts deleted file mode 100644 index 500ef7463..000000000 --- a/packages/narwallets/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/narwallets/src/lib/narwallets.spec.ts b/packages/narwallets/src/lib/narwallets.spec.ts deleted file mode 100644 index 8ab8c23e3..000000000 --- a/packages/narwallets/src/lib/narwallets.spec.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries */ -import { mock } from "jest-mock-extended"; -import { mockWallet } from "../../../core/src/lib/testUtils"; - -import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; -import { setupNarwallets } from "./narwallets"; -import type { InjectedWallet } from "@near-wallet-selector/core"; - -const accountId = "test-account.testnet"; -const transactions = [ - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, -]; - -const mockNarWalletOnWindow = () => { - window.postMessage = jest.fn(); - window.narwallets = mock(); - - return window.narwallets; -}; - -const createNarWallet = async (deps: MockWalletDependencies = {}) => { - const injectedNarWallet = mockNarWalletOnWindow(); - const { wallet } = await mockWallet(setupNarwallets(), deps); - - return { - wallet, - injectedNarWallet, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("signIn", () => { - it.skip("sign into nar wallet", async () => { - const { wallet, injectedNarWallet } = await createNarWallet(); - - const accounts = await wallet.signIn({ contractId: "test.testnet" }); - - expect(injectedNarWallet.signIn).toHaveBeenCalled(); - expect(accounts).toEqual([{ accountId, publicKey: undefined }]); - }); -}); - -describe("signOut", () => { - it.skip("sign out of nar wallet", async () => { - const { wallet, injectedNarWallet } = await createNarWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signOut(); - - expect(injectedNarWallet.signOut).toHaveBeenCalled(); - }); -}); - -describe("getAccounts", () => { - it.skip("returns array of accounts", async () => { - const { wallet, injectedNarWallet } = await createNarWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.getAccounts(); - - expect(injectedNarWallet.getAccounts).toHaveBeenCalled(); - expect(result).toEqual([{ accountId, publicKey: undefined }]); - }); -}); - -describe("signAndSendTransaction", () => { - it.skip("sign transaction in nar wallet", async () => { - const { wallet, injectedNarWallet } = await createNarWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signAndSendTransaction({ - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }); - - expect(injectedNarWallet.signAndSendTransaction).toHaveBeenCalled(); - }); -}); -describe("signAndSendTransactions", () => { - it.skip("sign transactions in nar wallet", async () => { - const { wallet, injectedNarWallet } = await createNarWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.signAndSendTransactions({ - transactions, - }); - - expect(injectedNarWallet.signAndSendTransactions).toHaveBeenCalled(); - expect(result.length).toEqual(transactions.length); - }); -}); diff --git a/packages/narwallets/src/lib/narwallets.ts b/packages/narwallets/src/lib/narwallets.ts deleted file mode 100644 index cfae7bdec..000000000 --- a/packages/narwallets/src/lib/narwallets.ts +++ /dev/null @@ -1,298 +0,0 @@ -import { isMobile } from "is-mobile"; -import type { - WalletModuleFactory, - WalletBehaviourFactory, - InjectedWallet, - Account, - Action, - FinalExecutionOutcome, -} from "@near-wallet-selector/core"; -import icon from "./icon"; -import { waitFor } from "@near-wallet-selector/core"; - -declare global { - interface Window { - narwallets: InjectedWallet | undefined; - } -} - -export interface SignAndSendTransactionParams { - signerId?: string; - receiverId?: string; - actions: Array; -} -export interface NarwalletsParams { - iconUrl?: string; - deprecated?: boolean; -} - -interface NarwalletsError { - error: string | { type: string }; -} - -type Resolve = - | string - | boolean - | FinalExecutionOutcome - | Array - | NarwalletsError; -type NarwalletsFunctionParams = - | undefined - | boolean - | SignAndSendTransactionParams - | Array; - -interface PendingPromises { - id_wallet_selector: number; - code: string; - resolve: (value: Resolve) => void; - reject: (reason?: string) => void; - timeout?: NodeJS.Timeout; -} - -const NARWALLETS_CODES = { - SIGN_IN: "sign-in", - IS_INSTALLED: "is-installed", - IS_SIGNED_IN: "is-signed-in", - SIGN_OUT: "sign-out", - GET_ACCOUNT_ID: "get-account-id", - SIGN_AND_SEND_TRANSACTION: "sign-and-send-transaction", - SIGN_AND_SEND_TRANSACTIONS: "sign-and-send-transactions", -}; - -let id = 0; -const pendingPromises: Array = []; - -const sendToNarwallets = ( - code: string, - withTimeout = false, - params?: NarwalletsFunctionParams -): Promise => { - const promise = new Promise((resolve, reject) => { - id++; - let promiseTimeout; - if (withTimeout) { - promiseTimeout = setTimeout(() => { - return reject(Error("timeout")); - }, 2000); - } - pendingPromises.push({ - id_wallet_selector: id, - code, - resolve, - reject, - timeout: promiseTimeout, - }); - - window.postMessage({ - id, - src: "ws", - type: "nw", - code, - dest: "ext", - params, - }); - }); - return promise; -}; - -const isInstalled = async (): Promise => { - // Note: sendToNarwallets throws if not installed - return waitFor(() => !!window.narwallets).catch(() => false); -}; - -const isSignedIn = (): Promise => { - return sendToNarwallets(NARWALLETS_CODES.IS_SIGNED_IN, true); -}; - -const getAccountId = (): Promise => { - return sendToNarwallets(NARWALLETS_CODES.GET_ACCOUNT_ID, false); -}; - -const callSignAndSendTransaction = ( - params: SignAndSendTransactionParams -): Promise => { - return sendToNarwallets( - NARWALLETS_CODES.SIGN_AND_SEND_TRANSACTION, - false, - params - ); -}; - -const callSignAndSendTransactions = ( - params: Array -): Promise => { - return sendToNarwallets( - NARWALLETS_CODES.SIGN_AND_SEND_TRANSACTIONS, - false, - params - ); -}; - -const findPendingPromiseById = ( - promiseId: number -): PendingPromises | undefined => { - return pendingPromises.filter((c) => c.id_wallet_selector === promiseId)[0]; -}; - -const removePendingPromise = (callback: PendingPromises) => { - const index = pendingPromises.indexOf(callback); - if (index > -1) { - // only splice array when item is found - pendingPromises.splice(index, 1); // 2nd parameter means remove one item only - } -}; - -const setupNarwalletsState = (): void => { - // receive response from the extension content_script - window.addEventListener("message", (event) => { - if (event.source !== window) { - return; - } - const { data } = event; - // msg should be directed to the page (response from the extension, relayed from the content script) - if (!data || data.dest !== "page") { - return; - } - - if (data.id && data.type === "nw") { - const pendingPromise = findPendingPromiseById(data.id); - if (pendingPromise) { - removePendingPromise(pendingPromise); - if (pendingPromise.timeout) { - clearTimeout(pendingPromise.timeout); - } - if (!data.result) { - pendingPromise.reject("result is empty"); - } else if (data.result.err) { - pendingPromise.reject(data.result.err); - } else { - pendingPromise.resolve(data.result.data); - } - } - } - }); -}; - -const Narwallets: WalletBehaviourFactory = async ({ - metadata, - store, - logger, -}) => { - const signOut = async () => { - if (!(await isSignedIn())) { - return; - } - - const res: Resolve = await sendToNarwallets("sign-out"); - // const res = await _state.wallet.signOut(); - if (res === true) { - return; - } - - const errorObject: NarwalletsError = res as NarwalletsError; - - const error = new Error( - typeof errorObject.error === "string" - ? errorObject.error - : errorObject.error.type - ); - - // Prevent signing out by throwing. - if (error.message === "User reject") { - throw error; - } - - // Continue signing out but log the issue. - logger.log("Failed to sign out"); - logger.error(error); - }; - - return { - async signIn() { - const isUserSignedIn = await isSignedIn(); - let code; - if (!isUserSignedIn) { - code = NARWALLETS_CODES.SIGN_IN; - } else { - code = NARWALLETS_CODES.GET_ACCOUNT_ID; - } - const response = (await sendToNarwallets(code)) as string; - return [{ accountId: response }]; - }, - - signOut, - - async getAccounts(): Promise> { - const accountId: string = (await getAccountId()) as string; - return [{ accountId }]; - }, - - async verifyOwner({ message }) { - logger.log("Narwallets:verifyOwner", { message }); - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - - const { contract, accounts } = store.getState(); - - if (!accounts || accounts.length === 0 || !contract) { - throw new Error("Wallet not signed in"); - } - - return callSignAndSendTransaction({ - signerId, - receiverId: receiverId || contract.contractId, - actions: actions, - }) as Promise; - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - const { contract, accounts } = store.getState(); - - // test: avoid a call to isSignedIn - if (!accounts || accounts.length === 0 || !contract) { - throw new Error("Wallet not signed in"); - } - - return callSignAndSendTransactions(transactions) as Promise< - Array - >; - }, - }; -}; - -export const setupNarwallets = ({ - iconUrl = icon, - deprecated = false, -}: NarwalletsParams = {}): WalletModuleFactory => { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - - setupNarwalletsState(); - - const installed = await isInstalled(); - - return { - id: "narwallets", - type: "injected", - metadata: { - name: "Narwallets", - description: null, - iconUrl, - downloadUrl: - "https://chrome.google.com/webstore/detail/narwallets-v4/lkpeokpdkmcdaiadpmnnpimlgmdobkdj", - deprecated, - available: installed, - }, - init: Narwallets, - }; - }; -}; diff --git a/packages/narwallets/tsconfig.json b/packages/narwallets/tsconfig.json deleted file mode 100644 index 115cd6e64..000000000 --- a/packages/narwallets/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - } -} \ No newline at end of file diff --git a/packages/narwallets/tsconfig.lib.json b/packages/narwallets/tsconfig.lib.json deleted file mode 100644 index a87bd6b78..000000000 --- a/packages/narwallets/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["**/*.spec.ts", "jest.config.ts"] -} diff --git a/packages/narwallets/tsconfig.spec.json b/packages/narwallets/tsconfig.spec.json deleted file mode 100644 index a85d573fc..000000000 --- a/packages/narwallets/tsconfig.spec.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": [ - "**/*.test.ts", - "**/*.spec.ts", - "**/*.test.tsx", - "**/*.spec.tsx", - "**/*.test.js", - "**/*.spec.js", - "**/*.test.jsx", - "**/*.spec.jsx", - "**/*.d.ts", - "jest.config.ts" - ] -} diff --git a/packages/near-mobile-wallet/.babelrc b/packages/near-mobile-wallet/.babelrc deleted file mode 100644 index d5e7f8c7d..000000000 --- a/packages/near-mobile-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} \ No newline at end of file diff --git a/packages/near-mobile-wallet/.eslintrc.json b/packages/near-mobile-wallet/.eslintrc.json deleted file mode 100644 index b8b4b6adf..000000000 --- a/packages/near-mobile-wallet/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} \ No newline at end of file diff --git a/packages/near-mobile-wallet/README.md b/packages/near-mobile-wallet/README.md deleted file mode 100644 index fccbeafdf..000000000 --- a/packages/near-mobile-wallet/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# @near-wallet-selector/near-mobile-wallet - -This is the [Near Mobile Wallet](https://nearmobile.app/) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` - -```bash -# Using Yarn -yarn add @near-wallet-selector/near-mobile-wallet - -# Using NPM. -npm install @near-wallet-selector/near-mobile-wallet -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupNearMobileWallet } from "@near-wallet-selector/near-mobile-wallet"; - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [setupNearMobileWallet()], -}); -``` - -## Options - -- `dAppMetadata: DAppMetadata` (optional): An object to provide data from your dApp to be displayed on Near Mobile Wallet when signing requests. -```ts -export interface DAppMetadata { - name: string; - logoUrl: string; - url?: string; -} -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/near-mobile-wallet/assets/icon.png b/packages/near-mobile-wallet/assets/icon.png deleted file mode 100644 index b5b1cc33e..000000000 Binary files a/packages/near-mobile-wallet/assets/icon.png and /dev/null differ diff --git a/packages/near-mobile-wallet/jest.config.ts b/packages/near-mobile-wallet/jest.config.ts deleted file mode 100644 index 86d846012..000000000 --- a/packages/near-mobile-wallet/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "near-mobile-wallet", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/near-mobile-wallet", -}; \ No newline at end of file diff --git a/packages/near-mobile-wallet/package.json b/packages/near-mobile-wallet/package.json deleted file mode 100644 index 6c36d958b..000000000 --- a/packages/near-mobile-wallet/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/near-mobile-wallet", - "version": "8.9.13", - "description": "NEAR Mobile wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "near-mobile-wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/near-mobile-wallet" -} diff --git a/packages/near-mobile-wallet/project.json b/packages/near-mobile-wallet/project.json deleted file mode 100644 index 36598d271..000000000 --- a/packages/near-mobile-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "near-mobile-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/near-mobile-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/near-mobile-wallet", - "tsConfig": "packages/near-mobile-wallet/tsconfig.lib.json", - "project": "packages/near-mobile-wallet/package.json", - "entryFile": "packages/near-mobile-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/near-mobile-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/near-mobile-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/near-mobile-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/near-mobile-wallet"], - "options": { - "jestConfig": "packages/near-mobile-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} \ No newline at end of file diff --git a/packages/near-mobile-wallet/src/index.ts b/packages/near-mobile-wallet/src/index.ts deleted file mode 100644 index fda5de453..000000000 --- a/packages/near-mobile-wallet/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { setupNearMobileWallet } from "./lib/near-mobile-wallet"; diff --git a/packages/near-mobile-wallet/src/lib/icon.ts b/packages/near-mobile-wallet/src/lib/icon.ts deleted file mode 100644 index c1fdb5a2e..000000000 --- a/packages/near-mobile-wallet/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default "data:image/png;base64,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"; diff --git a/packages/near-mobile-wallet/src/lib/init.wallet.ts b/packages/near-mobile-wallet/src/lib/init.wallet.ts deleted file mode 100644 index 17565d2de..000000000 --- a/packages/near-mobile-wallet/src/lib/init.wallet.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { NearMobileWallet } from "@peersyst/near-mobile-signer/dist/src/wallet/NearMobileWallet"; -import type { NearMobileWalletInit } from "./near-mobile-wallet.types"; -import type { Network } from "@peersyst/near-mobile-signer/dist/src/common/models"; - -export const initNearMobileWallet: NearMobileWalletInit = async (config) => { - const { store, options, logger, dAppMetadata } = config; - - const nearMobileWallet = new NearMobileWallet({ - network: options.network.networkId as Network, - nodeUrl: options.network.nodeUrl, - metadata: dAppMetadata, - }); - - async function getAccounts() { - logger.log("[NearMobileWallet]:getAccounts"); - const accountIds = await nearMobileWallet.getAccounts(); - const accounts = []; - - for (let i = 0; i < accountIds.length; i++) { - accounts.push({ - accountId: accountIds[i], - publicKey: ( - await nearMobileWallet.signer.getPublicKey( - accountIds[i], - options.network.networkId - ) - ).toString(), - }); - } - return accounts; - } - - return { - get network() { - return "mainnet"; - }, - - async signIn(data) { - logger.log("[NearMobileWallet]: signIn"); - - const contractId = data.contractId !== "" ? data.contractId : undefined; - await nearMobileWallet.signIn({ ...data, contractId: contractId }); - return await getAccounts(); - }, - - async signOut() { - logger.log("[NearMobileWallet]: signOut"); - await nearMobileWallet.signOut(); - }, - - async getAccounts() { - return getAccounts(); - }, - - async signAndSendTransaction(data) { - logger.log("[NearMobileWallet]: signAndSendTransaction", data); - - const { contract } = store.getState(); - if (!contract) { - throw new Error("Wallet not signed in"); - } - - return await nearMobileWallet.signAndSendTransaction({ - receiverId: contract.contractId, - ...data, - }); - }, - - async verifyOwner() { - throw Error( - "[NearMobileWallet]: verifyOwner is deprecated, use signMessage method with implementation NEP0413 Standard" - ); - }, - - async signMessage(data) { - const { recipient, nonce, ...rest } = data; - logger.log("[NearMobileWallet]: signMessage", data); - const result = await nearMobileWallet.signMessage({ - ...rest, - receiver: recipient, - nonce: Array.from(nonce), - }); - return { - accountId: result.accountId, - signature: result.signature.toString(), - publicKey: result.publicKey.toString(), - }; - }, - - async signAndSendTransactions(data) { - logger.log("[NearMobileWallet]: signAndSendTransactions", data); - return await nearMobileWallet.signAndSendTransactions(data); - }, - }; -}; diff --git a/packages/near-mobile-wallet/src/lib/near-mobile-wallet.ts b/packages/near-mobile-wallet/src/lib/near-mobile-wallet.ts deleted file mode 100644 index 785dc4a82..000000000 --- a/packages/near-mobile-wallet/src/lib/near-mobile-wallet.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { WalletModuleFactory } from "@near-wallet-selector/core"; -import { initNearMobileWallet } from "./init.wallet"; -import icon from "./icon"; -import type { - NearMobileWallet, - SetupNearMobileWallet, -} from "./near-mobile-wallet.types"; - -export function setupNearMobileWallet({ - dAppMetadata, -}: SetupNearMobileWallet = {}): WalletModuleFactory { - return async () => { - return { - id: "near-mobile-wallet", - type: "injected", - metadata: { - iconUrl: icon, - name: "Near Mobile Wallet", - description: "Mobile wallet for NEAR Protocol", - useUrlAccountImport: false, - downloadUrl: "https://nearmobile.app/", - deprecated: false, - available: true, - }, - init: (config) => initNearMobileWallet({ ...config, dAppMetadata }), - }; - }; -} diff --git a/packages/near-mobile-wallet/src/lib/near-mobile-wallet.types.ts b/packages/near-mobile-wallet/src/lib/near-mobile-wallet.types.ts deleted file mode 100644 index b5a037946..000000000 --- a/packages/near-mobile-wallet/src/lib/near-mobile-wallet.types.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { - InjectedWallet, - WalletBehaviourFactory, -} from "@near-wallet-selector/core"; - -import type { - NearMobileWalletProtocol, - NearMobileWalletConstructorParams, - DAppMetadata, -} from "@peersyst/near-mobile-signer/dist/src/wallet/NearMobileWallet.types"; - -export type NearMobileWallet = InjectedWallet & - Omit; - -export type CustomNearMobileWalletConstructorParams = Omit< - NearMobileWalletConstructorParams, - "metadata" -> & { dAppMetadata?: DAppMetadata }; - -export type NearMobileWalletInit = WalletBehaviourFactory< - NearMobileWallet, - CustomNearMobileWalletConstructorParams ->; - -export interface SetupNearMobileWallet { - dAppMetadata?: NearMobileWalletConstructorParams["metadata"]; -} diff --git a/packages/near-mobile-wallet/tsconfig.json b/packages/near-mobile-wallet/tsconfig.json deleted file mode 100644 index b91a5ef39..000000000 --- a/packages/near-mobile-wallet/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} \ No newline at end of file diff --git a/packages/near-mobile-wallet/tsconfig.lib.json b/packages/near-mobile-wallet/tsconfig.lib.json deleted file mode 100644 index 041a7bd44..000000000 --- a/packages/near-mobile-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} \ No newline at end of file diff --git a/packages/near-mobile-wallet/tsconfig.spec.json b/packages/near-mobile-wallet/tsconfig.spec.json deleted file mode 100644 index 88c8af823..000000000 --- a/packages/near-mobile-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} \ No newline at end of file diff --git a/packages/near-snap/.babelrc b/packages/near-snap/.babelrc deleted file mode 100644 index d5e7f8c7d..000000000 --- a/packages/near-snap/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} \ No newline at end of file diff --git a/packages/near-snap/.eslintrc.json b/packages/near-snap/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/near-snap/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/near-snap/README.md b/packages/near-snap/README.md deleted file mode 100644 index 452e4c654..000000000 --- a/packages/near-snap/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# @near-wallet-selector/near-snap - -This is the NEAR Metamask Snap package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` - -```bash -# Using Yarn -yarn add @near-wallet-selector/near-snap - -# Using NPM. -npm install @near-wallet-selector/near-snap -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupNearSnap } from "@near-wallet-selector/near-snap"; - -// Near Snap for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const nearSnap = setupNearSnap({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [nearSnap], -}); -``` - - -## Near Snap JS SDK - -The library uses @near-snap/sdk, you can read more about the functionality here: -https://github.com/here-wallet/near-snap - - -## Options - -- `iconUrl`: (`string?`): Icon is optional. Default image point to Metamask Flask Logo in base64 format. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupNearSnap } from "@near-wallet-selector/near-snap"; -import SnapIconUrl from "@near-wallet-selector/near-snap/assets/snap-icon.svg"; - -const snapWallet = setupNearSnap({ - iconUrl: SnapIconUrl -}); - -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/near-snap/assets/near-icon.svg b/packages/near-snap/assets/near-icon.svg deleted file mode 100644 index 47ccb58a1..000000000 --- a/packages/near-snap/assets/near-icon.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/near-snap/jest.config.js b/packages/near-snap/jest.config.js deleted file mode 100644 index c64bb2933..000000000 --- a/packages/near-snap/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "near-snap", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/near-snap", -}; diff --git a/packages/near-snap/jest.config.ts b/packages/near-snap/jest.config.ts deleted file mode 100644 index 1c0876934..000000000 --- a/packages/near-snap/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "near-snap", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/near-snap", -}; diff --git a/packages/near-snap/package.json b/packages/near-snap/package.json deleted file mode 100644 index 687d64634..000000000 --- a/packages/near-snap/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/near-snap", - "version": "8.9.13", - "description": "Metamask snap to interact with Near dapps.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "metamask" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/near-snap" -} diff --git a/packages/near-snap/project.json b/packages/near-snap/project.json deleted file mode 100644 index d62d53fb1..000000000 --- a/packages/near-snap/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "near-snap", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/near-snap/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/near-snap", - "tsConfig": "packages/near-snap/tsconfig.lib.json", - "project": "packages/near-snap/package.json", - "entryFile": "packages/near-snap/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/near-snap/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/near-snap/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/near-snap/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/near-snap"], - "options": { - "jestConfig": "packages/near-snap/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/near-snap/src/index.ts b/packages/near-snap/src/index.ts deleted file mode 100644 index 6fd2f020a..000000000 --- a/packages/near-snap/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { setupNearSnap } from "./lib"; diff --git a/packages/near-snap/src/lib/icon.ts b/packages/near-snap/src/lib/icon.ts deleted file mode 100644 index 63d0e0617..000000000 --- a/packages/near-snap/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8xIiB4PSIwIiB5PSIwIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAzMTguNiAzMTguNiI+CiAgPHN0eWxlPgogICAgLnN0MSwuc3Q2e2ZpbGw6I2U0NzYxYjtzdHJva2U6I2U0NzYxYjtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LnN0NntmaWxsOiNmNjg1MWI7c3Ryb2tlOiNmNjg1MWJ9CiAgPC9zdHlsZT4KICA8cGF0aCBmaWxsPSIjZTI3NjFiIiBzdHJva2U9IiNlMjc2MWIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0ibTI3NC4xIDM1LjUtOTkuNSA3My45TDE5MyA2NS44eiIvPgogIDxwYXRoIGQ9Im00NC40IDM1LjUgOTguNyA3NC42LTE3LjUtNDQuM3ptMTkzLjkgMTcxLjMtMjYuNSA0MC42IDU2LjcgMTUuNiAxNi4zLTU1LjN6bS0yMDQuNC45TDUwLjEgMjYzbDU2LjctMTUuNi0yNi41LTQwLjZ6IiBjbGFzcz0ic3QxIi8+CiAgPHBhdGggZD0ibTEwMy42IDEzOC4yLTE1LjggMjMuOSA1Ni4zIDIuNS0yLTYwLjV6bTExMS4zIDAtMzktMzQuOC0xLjMgNjEuMiA1Ni4yLTIuNXpNMTA2LjggMjQ3LjRsMzMuOC0xNi41LTI5LjItMjIuOHptNzEuMS0xNi41IDMzLjkgMTYuNS00LjctMzkuM3oiIGNsYXNzPSJzdDEiLz4KICA8cGF0aCBmaWxsPSIjZDdjMWIzIiBzdHJva2U9IiNkN2MxYjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0ibTIxMS44IDI0Ny40LTMzLjktMTYuNSAyLjcgMjIuMS0uMyA5LjN6bS0xMDUgMCAzMS41IDE0LjktLjItOS4zIDIuNS0yMi4xeiIvPgogIDxwYXRoIGZpbGw9IiMyMzM0NDciIHN0cm9rZT0iIzIzMzQ0NyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJtMTM4LjggMTkzLjUtMjguMi04LjMgMTkuOS05LjF6bTQwLjkgMCA4LjMtMTcuNCAyMCA5LjF6Ii8+CiAgPHBhdGggZmlsbD0iI2NkNjExNiIgc3Ryb2tlPSIjY2Q2MTE2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Im0xMDYuOCAyNDcuNCA0LjgtNDAuNi0zMS4zLjl6TTIwNyAyMDYuOGw0LjggNDAuNiAyNi41LTM5Ljd6bTIzLjgtNDQuNy01Ni4yIDIuNSA1LjIgMjguOSA4LjMtMTcuNCAyMCA5LjF6bS0xMjAuMiAyMy4xIDIwLTkuMSA4LjIgMTcuNCA1LjMtMjguOS01Ni4zLTIuNXoiLz4KICA8cGF0aCBmaWxsPSIjZTQ3NTFmIiBzdHJva2U9IiNlNDc1MWYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0ibTg3LjggMTYyLjEgMjMuNiA0Ni0uOC0yMi45em0xMjAuMyAyMy4xLTEgMjIuOSAyMy43LTQ2em0tNjQtMjAuNi01LjMgMjguOSA2LjYgMzQuMSAxLjUtNDQuOXptMzAuNSAwLTIuNyAxOCAxLjIgNDUgNi43LTM0LjF6Ii8+CiAgPHBhdGggZD0ibTE3OS44IDE5My41LTYuNyAzNC4xIDQuOCAzLjMgMjkuMi0yMi44IDEtMjIuOXptLTY5LjItOC4zLjggMjIuOSAyOS4yIDIyLjggNC44LTMuMy02LjYtMzQuMXoiIGNsYXNzPSJzdDYiLz4KICA8cGF0aCBmaWxsPSIjYzBhZDllIiBzdHJva2U9IiNjMGFkOWUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0ibTE4MC4zIDI2Mi4zLjMtOS4zLTIuNS0yLjJoLTM3LjdsLTIuMyAyLjIuMiA5LjMtMzEuNS0xNC45IDExIDkgMjIuMyAxNS41aDM4LjNsMjIuNC0xNS41IDExLTl6Ii8+CiAgPHBhdGggZmlsbD0iIzE2MTYxNiIgc3Ryb2tlPSIjMTYxNjE2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Im0xNzcuOSAyMzAuOS00LjgtMy4zaC0yNy43bC00LjggMy4zLTIuNSAyMi4xIDIuMy0yLjJoMzcuN2wyLjUgMi4yeiIvPgogIDxwYXRoIGZpbGw9IiM3NjNkMTYiIHN0cm9rZT0iIzc2M2QxNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJtMjc4LjMgMTE0LjIgOC41LTQwLjgtMTIuNy0zNy45LTk2LjIgNzEuNCAzNyAzMS4zIDUyLjMgMTUuMyAxMS42LTEzLjUtNS0zLjYgOC03LjMtNi4yLTQuOCA4LTYuMXpNMzEuOCA3My40bDguNSA0MC44LTUuNCA0IDggNi4xLTYuMSA0LjggOCA3LjMtNSAzLjYgMTEuNSAxMy41IDUyLjMtMTUuMyAzNy0zMS4zLTk2LjItNzEuNHoiLz4KICA8cGF0aCBkPSJtMjY3LjIgMTUzLjUtNTIuMy0xNS4zIDE1LjkgMjMuOS0yMy43IDQ2IDMxLjItLjRoNDYuNXptLTE2My42LTE1LjMtNTIuMyAxNS4zLTE3LjQgNTQuMmg0Ni40bDMxLjEuNC0yMy42LTQ2em03MSAyNi40IDMuMy01Ny43IDE1LjItNDEuMWgtNjcuNWwxNSA0MS4xIDMuNSA1Ny43IDEuMiAxOC4yLjEgNDQuOGgyNy43bC4yLTQ0Ljh6IiBjbGFzcz0ic3Q2Ii8+Cjwvc3ZnPg==`; diff --git a/packages/near-snap/src/lib/index.ts b/packages/near-snap/src/lib/index.ts deleted file mode 100644 index a460f5ce7..000000000 --- a/packages/near-snap/src/lib/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { isMobile } from "is-mobile"; -import type { WalletModuleFactory } from "@near-wallet-selector/core"; -import { initNearSnap, snap } from "./selector"; -import icon from "./icon"; - -export { icon }; - -export function setupNearSnap({ - deprecated = false, - iconUrl = icon, -} = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - - return { - id: "near-snap", - type: "injected", - init: initNearSnap, - metadata: { - name: "Near Snap", - description: "Metamask Snap for NEAR Protocol", - downloadUrl: "https://near-snap.surge.sh", - available: await snap.provider.isSnapsAvailable(), - deprecated, - iconUrl, - }, - }; - }; -} diff --git a/packages/near-snap/src/lib/selector.ts b/packages/near-snap/src/lib/selector.ts deleted file mode 100644 index ba49ea261..000000000 --- a/packages/near-snap/src/lib/selector.ts +++ /dev/null @@ -1,84 +0,0 @@ -import type { - InjectedWallet, - NetworkId, - WalletBehaviourFactory, -} from "@near-wallet-selector/core"; -import { NearSnap, NearSnapAccount } from "@near-snap/sdk"; - -export const snap = new NearSnap(); - -export const initNearSnap: WalletBehaviourFactory = async ( - config -) => { - const { store, logger, options } = config; - const network = options.network.networkId as NetworkId; - - let account = await NearSnapAccount.restore({ network, snap }); - - return { - async isSignedIn() { - logger.log("NearSnap:isSignedIn"); - return account != null; - }, - - async signIn({ contractId, methodNames }) { - logger.log("NearSnap:signIn"); - account = await NearSnapAccount.connect({ - contractId: contractId === "" ? undefined : contractId, - methods: methodNames, - network, - snap, - }); - - return [{ accountId: account.accountId }]; - }, - - async signOut() { - logger.log("NearSnap:signOut"); - await account?.disconnect(); - }, - - async getAccounts() { - return account ? [{ accountId: account.accountId }] : []; - }, - - async signAndSendTransaction(data) { - logger.log("NearSnap:signAndSendTransaction", data); - - if (account == null) { - throw new Error("Wallet not signed in"); - } - - const { contract } = store.getState(); - const receiverId = data.receiverId ?? contract?.contractId; - - if (receiverId == null) { - throw new Error("ReceiverId is not defined"); - } - - return await account.executeTransaction({ receiverId, ...data }); - }, - - async signMessage({ message, nonce, recipient }) { - if (account == null) { - throw new Error("Wallet not signed in"); - } - - return await account.signMessage({ message, nonce, recipient }); - }, - - async verifyOwner() { - throw Error("NearSnap:verifyOwner is not released yet"); - }, - - async signAndSendTransactions({ transactions }) { - logger.log("NearSnap:signAndSendTransactions", { transactions }); - - if (account == null) { - throw new Error("Wallet not signed in"); - } - - return await account.executeTransactions(transactions); - }, - }; -}; diff --git a/packages/near-snap/tsconfig.json b/packages/near-snap/tsconfig.json deleted file mode 100644 index b91a5ef39..000000000 --- a/packages/near-snap/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} \ No newline at end of file diff --git a/packages/near-snap/tsconfig.lib.json b/packages/near-snap/tsconfig.lib.json deleted file mode 100644 index b062bd2f8..000000000 --- a/packages/near-snap/tsconfig.lib.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "module": "commonjs", - "types": [] - }, - "include": [ - "**/*.ts" - ], - "exclude": [ - "jest.config.ts", - "**/*.spec.ts", - "**/*.test.ts" - ] -} \ No newline at end of file diff --git a/packages/near-snap/tsconfig.spec.json b/packages/near-snap/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/near-snap/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/nearfi/.babelrc b/packages/nearfi/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/nearfi/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/nearfi/.eslintrc.json b/packages/nearfi/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/nearfi/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/nearfi/README.md b/packages/nearfi/README.md deleted file mode 100644 index aaa2ab5b3..000000000 --- a/packages/nearfi/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# @near-wallet-selector/nearfi - -This is the [NearFi wallet](https://nearfi.finance) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires near-api-js v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` - -```bash -# Using Yarn -yarn add @near-wallet-selector/nearfi - -# Using NPM. -npm install @near-wallet-selector/nearfi -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupNearFi } from "@near-wallet-selector/nearfi"; - -// NearFi for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const nearFi = setupNearFi({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [nearFi], -}); -``` - -> Note: NearFi wallet option is available only in the in-built browser of NearFi mobile app. - - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/nearfi-icon.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupNearFi } from "@near-wallet-selector/nearfi"; -import nearfiIconUrl from "@near-wallet-selector/nearfi/assets/nearfi-icon.png"; - -const nearfi = setupNearFi({ - iconUrl: nearfiIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/nearfi/assets/nearfi-icon.png b/packages/nearfi/assets/nearfi-icon.png deleted file mode 100644 index 14411e47b..000000000 Binary files a/packages/nearfi/assets/nearfi-icon.png and /dev/null differ diff --git a/packages/nearfi/jest.config.ts b/packages/nearfi/jest.config.ts deleted file mode 100644 index 3a77919f9..000000000 --- a/packages/nearfi/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -module.exports = { - displayName: "nearfi", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]sx?$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/nearfi", -}; diff --git a/packages/nearfi/package.json b/packages/nearfi/package.json deleted file mode 100644 index 0704ffb2e..000000000 --- a/packages/nearfi/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/nearfi", - "version": "8.9.13", - "description": "Nearfi package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "nearfi wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/nearfi" -} diff --git a/packages/nearfi/project.json b/packages/nearfi/project.json deleted file mode 100644 index d61ae4cd8..000000000 --- a/packages/nearfi/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "nearfi", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/nearfi/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/nearfi", - "tsConfig": "packages/nearfi/tsconfig.lib.json", - "project": "packages/nearfi/package.json", - "entryFile": "packages/nearfi/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/nearfi/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/nearfi/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/nearfi/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/nearfi"], - "options": { - "jestConfig": "packages/nearfi/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/nearfi/src/index.ts b/packages/nearfi/src/index.ts deleted file mode 100644 index 6b9620dd4..000000000 --- a/packages/nearfi/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupNearFi } from "./lib/nearfi"; -export type { NearFiParams } from "./lib/nearfi"; diff --git a/packages/nearfi/src/lib/icon.ts b/packages/nearfi/src/lib/icon.ts deleted file mode 100644 index 71651e91b..000000000 --- a/packages/nearfi/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/nearfi/src/lib/injected-nearfi.ts b/packages/nearfi/src/lib/injected-nearfi.ts deleted file mode 100644 index 696d46907..000000000 --- a/packages/nearfi/src/lib/injected-nearfi.ts +++ /dev/null @@ -1,141 +0,0 @@ -// Interfaces based on "documentation": https://github.com/SenderWallet/sender-wallet-integration-tutorial - -// Empty string if we haven't signed in before. -import type { providers } from "near-api-js"; - -interface AccessKey { - publicKey: { - data: Uint8Array; - keyType: number; - }; - secretKey: string; -} - -interface RequestSignInResponse { - accessKey: AccessKey; - error: string | { type: string }; - notificationId: number; - type: "nearfi-wallet-result"; -} - -type SignOutResponse = true | { error: string | { type: string } }; - -interface RpcInfo { - explorerUrl: string; - helperUrl: string; - index: number; - name: string; - network: string; - networkId: string; - nodeUrl: string; - walletUrl: string; - wrapNearContract: string; -} - -interface GetRpcResponse { - method: "getRpc"; - notificationId: number; - rpc: RpcInfo; - type: "nearfi-wallet-result"; -} - -interface RequestSignInParams { - contractId: string; - methodNames?: Array; - amount?: string; // in yoctoⓃ -} - -interface RpcChangedResponse { - explorerUrl: string; - helperUrl: string; - index: number; - name: string; - network: string; - networkId: string; - nodeUrl: string; - walletUrl: string; - wrapNearContract: string; -} - -interface SendMoneyParams { - receiverId: string; - amount: string; -} - -interface SendMoneyResponse { - transactionHash: string; - error?: string; -} - -interface Action { - methodName: string; - args: object; - gas: string; - deposit: string; -} - -interface SignAndSendTransactionParams { - receiverId: string; - actions: Array; -} - -// Seems to reuse signAndSendTransactions internally, hence the wrong method name and list of responses. -interface SignAndSendTransactionResponse { - actionType: "DAPP/DAPP_POPUP_RESPONSE"; - method: "signAndSendTransactions"; - notificationId: number; - error?: string; - response?: Array; - type: "nearfi-wallet-extensionResult"; -} - -interface SignAndSendTransactionsResponse { - actionType: "DAPP/DAPP_POPUP_RESPONSE"; - method: "signAndSendTransactions"; - notificationId: number; - error?: string; - response?: Array; - type: "nearfi-wallet-extensionResult"; -} - -interface Transaction { - receiverId: string; - actions: Array; -} - -interface RequestSignTransactionsParams { - transactions: Array; -} - -interface NearFiEvents { - signIn: () => void; - signOut: () => void; - accountChanged: (changedAccountId: string) => void; - rpcChanged: (response: RpcChangedResponse) => void; -} - -export interface InjectedNearFi { - isNearFi: boolean; - getAccountId: () => string | null; - getRpc: () => Promise; - requestSignIn: ( - params: RequestSignInParams - ) => Promise; - signOut: () => Promise; - isSignedIn: () => boolean; - removeEventListener: (event: string) => void; - on: ( - event: Event, - callback: NearFiEvents[Event] - ) => void; - // TODO: Determine return type. - sendMoney: (params: SendMoneyParams) => Promise; - signAndSendTransaction: ( - params: SignAndSendTransactionParams - ) => Promise; - requestSignTransactions: ( - params: RequestSignTransactionsParams - ) => Promise; - log: (...msg: Array) => void; - resolveSignInState: () => Promise; -} diff --git a/packages/nearfi/src/lib/nearfi.ts b/packages/nearfi/src/lib/nearfi.ts deleted file mode 100644 index e4fc958c3..000000000 --- a/packages/nearfi/src/lib/nearfi.ts +++ /dev/null @@ -1,258 +0,0 @@ -import { isMobile } from "is-mobile"; -import type { - WalletModuleFactory, - WalletBehaviourFactory, - InjectedWallet, - Action, - Transaction, - FunctionCallAction, - Optional, - Account, -} from "@near-wallet-selector/core"; -import { waitFor } from "@near-wallet-selector/core"; -import type { InjectedNearFi } from "./injected-nearfi"; -import icon from "./icon"; - -declare global { - interface Window { - nearFiWallet: InjectedNearFi | undefined; - } -} - -export interface NearFiParams { - iconUrl?: string; - deprecated?: boolean; -} - -interface NearFiState { - wallet: InjectedNearFi; -} - -const isInstalled = () => { - return waitFor(() => !!window.nearFiWallet?.isNearFi, { timeout: 200 }).catch( - () => false - ); -}; - -const setupNearFiState = (): NearFiState => { - const wallet = window.nearFiWallet!; - - return { - wallet, - }; -}; - -const NearFi: WalletBehaviourFactory = async ({ - options, - metadata, - store, - emitter, - logger, -}) => { - const _state = setupNearFiState(); - - const signOut = async () => { - if (!_state.wallet.isSignedIn()) { - return; - } - - const res = await _state.wallet.signOut(); - - if (res === true) { - return; - } - - const error = new Error( - typeof res.error === "string" ? res.error : res.error.type - ); - - // Prevent signing out by throwing. - if (error.message === "User reject") { - throw error; - } - - // Continue signing out but log the issue. - logger.log("Failed to sign out"); - logger.error(error); - }; - - const setupEvents = () => { - _state.wallet.on("accountChanged", async (newAccountId) => { - logger.log("onAccountChange", newAccountId); - emitter.emit("signedOut", null); - }); - - _state.wallet.on("rpcChanged", async (rpc) => { - logger.log("onNetworkChange", rpc); - - if (options.network.networkId !== rpc.networkId) { - await signOut(); - - emitter.emit("signedOut", null); - emitter.emit("networkChanged", { networkId: rpc.networkId }); - } - }); - }; - - const getAccounts = async (): Promise> => { - let accountId = _state.wallet.getAccountId(); - if (!accountId) { - await _state.wallet.resolveSignInState(); - accountId = _state.wallet.getAccountId(); - if (!accountId) { - return []; - } - } - return [{ accountId }]; - }; - - const isValidActions = ( - actions: Array - ): actions is Array => { - return actions.every((x) => x.type === "FunctionCall"); - }; - - const transformActions = (actions: Array) => { - const validActions = isValidActions(actions); - - if (!validActions) { - throw new Error( - `Only 'FunctionCall' actions types are supported by ${metadata.name}` - ); - } - - return actions.map((x) => x.params); - }; - - const transformTransactions = ( - transactions: Array> - ) => { - return transactions.map((transaction) => { - return { - receiverId: transaction.receiverId, - actions: transformActions(transaction.actions), - }; - }); - }; - if (_state.wallet && _state.wallet.isSignedIn()) { - setupEvents(); - } - - return { - async signIn({ contractId, methodNames }) { - const existingAccounts = await getAccounts(); - if (existingAccounts.length) { - return existingAccounts; - } - - const { accessKey, error } = await _state.wallet.requestSignIn({ - contractId, - methodNames, - }); - if (!accessKey || error) { - await signOut(); - - throw new Error( - (typeof error === "string" ? error : error.type) || - "Failed to sign in" - ); - } - - setupEvents(); - return await getAccounts(); - }, - - signOut, - - async getAccounts() { - return await getAccounts(); - }, - - async verifyOwner({ message }) { - logger.log("NearFi:verifyOwner", { message }); - - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - - const { contract } = store.getState(); - - if (!_state.wallet.isSignedIn() || !contract) { - throw new Error("Wallet not signed in"); - } - - return _state.wallet - .signAndSendTransaction({ - receiverId: receiverId || contract.contractId, - actions: transformActions(actions), - }) - .then((res) => { - if (res.error) { - throw new Error(res.error); - } - - // Shouldn't happen but avoids inconsistent responses. - if (!res.response?.length) { - throw new Error("Invalid response"); - } - - return res.response[0]; - }); - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - if (!_state.wallet.isSignedIn()) { - throw new Error("Wallet not signed in"); - } - - return _state.wallet - .requestSignTransactions({ - transactions: transformTransactions(transactions), - }) - .then((res) => { - if (res.error) { - throw new Error(res.error); - } - - // Shouldn't happen but avoids inconsistent responses. - if (!res.response?.length) { - throw new Error("Invalid response"); - } - - return res.response; - }); - }, - }; -}; - -export function setupNearFi({ - iconUrl = icon, - deprecated = false, -}: NearFiParams = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - const installed = await isInstalled(); - - if (!mobile || !installed) { - return null; - } - - return { - id: "nearfi", - type: "injected", - metadata: { - name: "NearFi", - description: "Your NEAR DeFi experience On The Go", - iconUrl, - downloadUrl: "https://nearfi.finance", - deprecated, - available: installed, - }, - init: NearFi, - }; - }; -} diff --git a/packages/nearfi/tsconfig.json b/packages/nearfi/tsconfig.json deleted file mode 100644 index e258886ff..000000000 --- a/packages/nearfi/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - } -} diff --git a/packages/nearfi/tsconfig.lib.json b/packages/nearfi/tsconfig.lib.json deleted file mode 100644 index a87bd6b78..000000000 --- a/packages/nearfi/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["**/*.spec.ts", "jest.config.ts"] -} diff --git a/packages/nearfi/tsconfig.spec.json b/packages/nearfi/tsconfig.spec.json deleted file mode 100644 index a85d573fc..000000000 --- a/packages/nearfi/tsconfig.spec.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": [ - "**/*.test.ts", - "**/*.spec.ts", - "**/*.test.tsx", - "**/*.spec.tsx", - "**/*.test.js", - "**/*.spec.js", - "**/*.test.jsx", - "**/*.spec.jsx", - "**/*.d.ts", - "jest.config.ts" - ] -} diff --git a/packages/neth/.eslintrc.json b/packages/neth/.eslintrc.json deleted file mode 100644 index 481351fd3..000000000 --- a/packages/neth/.eslintrc.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["neth-lib.ts"], - "rules": { - "@typescript-eslint/naming-convention": ["off"], - "@typescript-eslint/no-use-before-define": ["off"], - "@typescript-eslint/no-explicit-any": ["off"] - } - } - ] -} diff --git a/packages/neth/.gitignore b/packages/neth/.gitignore deleted file mode 100644 index c20a41dca..000000000 --- a/packages/neth/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ - -# dependencies -/node_modules diff --git a/packages/neth/README.md b/packages/neth/README.md deleted file mode 100644 index 544c99d13..000000000 --- a/packages/neth/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# @near-wallet-selector/neth - -This is the [NETH](https://neth.app) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` -```bash -# Using Yarn -yarn add @near-wallet-selector/neth - -# Using NPM. -npm install @near-wallet-selector/neth -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupNeth } from "@near-wallet-selector/neth"; - -// NETH for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const neth = setupNearSnap({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [neth], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/sender-icon.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. -- `gas`: (`string?`): Tgas - for each NETH transaction (bundling can include multiple "inner" transactions). Default is `200 Tgas`. -- `useModalCover`: (`boolean?`): Set background overlay to rgba(0, 0, 0, 0.5) while signing and awaiting transaction outcome. Default is `false`. -- `bundle`: (`boolean?`): The signAndSendTransactions will be bundled into 1 NETH TX. Default is `true`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupNeth } from "@near-wallet-selector/neth"; -import nethWalletIcon from "@near-wallet-selector/neth/assets/neth-icon.png"; - -const neth = setupNeth({ - iconUrl: nethWalletIcon -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/neth/assets/neth-icon.png b/packages/neth/assets/neth-icon.png deleted file mode 100644 index 84f1fe9a8..000000000 Binary files a/packages/neth/assets/neth-icon.png and /dev/null differ diff --git a/packages/neth/jest.config.js b/packages/neth/jest.config.js deleted file mode 100644 index 2d869188f..000000000 --- a/packages/neth/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "neth", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/neth", -}; diff --git a/packages/neth/jest.config.ts b/packages/neth/jest.config.ts deleted file mode 100644 index 33d77b5bc..000000000 --- a/packages/neth/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "neth", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/neth", -}; diff --git a/packages/neth/package.json b/packages/neth/package.json deleted file mode 100644 index 8f0da4770..000000000 --- a/packages/neth/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/neth", - "version": "8.9.13", - "description": "Control NEAR accounts with ETH accounts", - "author": "mattlockyer", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "neth" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/neth" -} diff --git a/packages/neth/project.json b/packages/neth/project.json deleted file mode 100644 index 74d643dde..000000000 --- a/packages/neth/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "neth", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/neth/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/neth", - "tsConfig": "packages/neth/tsconfig.lib.json", - "project": "packages/neth/package.json", - "entryFile": "packages/neth/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/neth/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/neth/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/neth/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/neth"], - "options": { - "jestConfig": "packages/neth/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/neth/src/assets/icons.ts b/packages/neth/src/assets/icons.ts deleted file mode 100644 index 2f9a76616..000000000 --- a/packages/neth/src/assets/icons.ts +++ /dev/null @@ -1 +0,0 @@ -export const nethIcon = `data:image/png;base64,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`; diff --git a/packages/neth/src/index.ts b/packages/neth/src/index.ts deleted file mode 100644 index c27aba6b2..000000000 --- a/packages/neth/src/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -export type { NethParams } from "./lib/neth"; - -export { setupNeth } from "./lib/neth"; -export { - getNear, - getConnection, - getEthereum, - handleCreate, - accountExists, - switchEthereum, - handleCheckAccount, - handleCancelFunding, - verifyOwner, - getNearMap, - handleDisconnect, - handleUpdateContract, - handleRefreshAppKey, - hasAppKey, - signIn, - signOut, - isSignedIn, - signAndSendTransactions, - initConnection, - MIN_NEW_ACCOUNT_ASK, -} from "./lib/neth-lib"; diff --git a/packages/neth/src/lib/neth-lib.ts b/packages/neth/src/lib/neth-lib.ts deleted file mode 100644 index f35741a52..000000000 --- a/packages/neth/src/lib/neth-lib.ts +++ /dev/null @@ -1,1335 +0,0 @@ -// @ts-nocheck - -import { ethers } from "ethers"; -import detectEthereumProvider from "@metamask/detect-provider"; -import * as nearAPI from "near-api-js"; -import { generateSeedPhrase } from "near-seed-phrase"; -import type { - KeyPair as NearKeyPair, - Account as NearAccount, -} from "near-api-js"; - -const { - Near, - Account, - KeyPair, - keyStores: { BrowserLocalStorageKeyStore }, - transactions: { addKey, deleteKey, functionCallAccessKey }, - utils: { - PublicKey, - format: { parseNearAmount }, - }, -} = nearAPI; - -export const NETH_SITE_URL = "https://neth.app"; -export const PREV_NETH_SITE_URL = "neardefi.github.io/neth"; - -const NETWORK = { - testnet: { - FUNDING_ACCOUNT_ID: "neth.testnet", - MAP_ACCOUNT_ID: "map.neth.testnet", - ROOT_ACCOUNT_ID: "testnet", - }, - mainnet: { - MAP_ACCOUNT_ID: "nethmap.near", - ROOT_ACCOUNT_ID: "near", - }, -}; - -const WS_STORAGE_NAMESPACE = "near-wallet-selector:neth:"; -const REFRESH_MSG = `Please refresh the page and try again.`; -const TX_ARGS_ATTEMPT = "__TX_ARGS_ATTEMPT"; -const ATTEMPT_SECRET_KEY = "__ATTEMPT_SECRET_KEY"; -const ATTEMPT_ACCOUNT_ID = "__ATTEMPT_ACCOUNT_ID"; -const ATTEMPT_ETH_ADDRESS = "__ATTEMPT_ETH_ADDRESS"; -const APP_KEY_SECRET = "__APP_KEY_SECRET"; -const APP_KEY_ACCOUNT_ID = "__APP_KEY_ACCOUNT_ID"; -const defaultGas = "200000000000000"; -const halfGas = "50000000000000"; -/// this is the new account amount 0.21 for account name, keys, contract and 0.01 for mapping contract storage cost -const MIN_NEW_ACCOUNT = parseNearAmount("0.4"); -const MIN_NEW_ACCOUNT_THRESH = parseNearAmount("0.49"); -export const MIN_NEW_ACCOUNT_ASK = parseNearAmount("0.5"); -const FUNDING_CHECK_TIMEOUT = 5000; -/// lkmfawl - -const attachedDepositMapping = parseNearAmount("0.05"); - -/// Helpers -const defaultStorage = (prefix = "") => ({ - getItem: (k) => { - const v = localStorage.getItem(prefix + k); - if (v?.charAt(0) !== "{") { - return v; - } - try { - return JSON.parse(v); - } catch (e) { - // logger.log(e); - } - }, - setItem: (k, v) => - localStorage.setItem( - prefix + k, - typeof v === "string" ? v : JSON.stringify(v) - ), - removeItem: (k) => localStorage.removeItem(prefix + k), -}); -const defaultLogger = () => ({ - // eslint-disable-next-line - log: (args) => console.log(...args), -}); - -/// NEAR setup -let near, - gas, - keyStore, - logger, - storage, - connection, - networkId, - contractAccount, - accountSuffix; - -export const initConnection = ({ - network, - gas: _gas = defaultGas, - logger: _logger = defaultLogger(), - storage: _storage = defaultStorage(), -}) => { - gas = _gas; - logger = _logger; - storage = _storage; - - keyStore = new BrowserLocalStorageKeyStore(); - near = new Near({ - ...network, - keyStore, - }); - connection = near.connection; - networkId = network.networkId; - contractAccount = new Account( - connection, - networkId === "mainnet" ? "near" : networkId - ); - accountSuffix = networkId === "mainnet" ? ".near" : "." + networkId; - - const cover = document.createElement("div"); - cover.style.display = "none"; - cover.style.width = "100%"; - cover.style.height = "100vh"; - cover.style.zIndex = "999999"; - cover.style.position = "fixed"; - cover.style.top = "0"; - cover.style.background = "rgba(0, 0, 0, 0.5)"; - document.body.appendChild(cover); - - /// recovery from unbundled TXs that haven't been broadcast yet - broadcastTXs(); - - return cover; -}; - -export const getConnection = () => { - return { - near, - connection, - keyStore, - networkId, - contractAccount, - accountSuffix, - }; -}; - -/// helpers - -export const accountExists = async (accountId, ethAddress = null) => { - try { - const account = new nearAPI.Account(connection, accountId); - await account.state(); - - if (ethAddress) { - const mapAccountId = await getNearMap(ethAddress); - if (mapAccountId) { - return true; - } - } - - return true; - } catch (e: any) { - if (!/no such file|does not exist/.test(e.toString())) { - throw e; - } - return false; - } -}; - -const buf2hex = (buf) => ethers.utils.hexlify(buf).substring(2); -const pub2hex = (publicKey) => - ethers.utils.hexlify(PublicKey.fromString(publicKey).data).substring(2); - -/// account creation and connection flow - -export const handleCreate = async ( - signer, - ethAddress, - newAccountId, - fundingAccountCB, - fundingErrorCB, - postFundingCB -) => { - if ( - (networkId === "testnet" && newAccountId.indexOf(".near") > -1) || - (networkId === "mainnet" && newAccountId.indexOf(".testnet") > -1) - ) { - return alert( - "Invalid account name. You do not need to add any .near or .testnet. Please try again." - ); - } - - /// get keypair from eth sig entropy for the near-eth account - const { publicKey: fundingAccountPubKey, secretKey: new_secret_key } = - await keyPairFromEthSig(signer, fundingKeyPayload()); - /// store attempt in localStorage so we can recover and retry / resume contract deployment - await storage.setItem(ATTEMPT_ACCOUNT_ID, newAccountId); - await storage.setItem(ATTEMPT_SECRET_KEY, new_secret_key); - await storage.setItem(ATTEMPT_ETH_ADDRESS, ethAddress); - - return await createAccount({ - signer, - newAccountId, - fundingAccountPubKey, - fundingAccountCB, - fundingErrorCB, - postFundingCB, - }); -}; - -const createAccount = async ({ - signer, - newAccountId, - fundingAccountPubKey, - fundingAccountCB, - fundingErrorCB, - postFundingCB, -}) => { - // const { publicKey, secretKey } = parseSeedPhrase(process.env.REACT_APP_FUNDING_SEED_PHRASE); - /// assumes implicit is funded, otherwise will warn and cycle here - - const implicitAccountId = Buffer.from( - PublicKey.from(fundingAccountPubKey).data - ).toString("hex"); - if (fundingAccountCB) { - fundingAccountCB(implicitAccountId); - } - - /// wait for implicit funding here and then continue to createAccount - const checkImplicitFunded = async () => { - logger.log("checking for funding of implicit account", implicitAccountId); - const account = new Account(connection, implicitAccountId); - try { - const balance = await account.getAccountBalance(); - const { available } = balance; - const diff = BigInt(available) - BigInt(MIN_NEW_ACCOUNT_THRESH as string); - if (diff < BigInt("0")) { - // alert(`There is not enough NEAR (${formatNearAmount(MIN_NEW_ACCOUNT_ASK, 4)} minimum) to create a new account and deploy NETH contract. Please deposit more and try again.`) - if (fundingErrorCB) { - fundingErrorCB(implicitAccountId, diff.abs().toString()); - } - await new Promise((r) => setTimeout(r, FUNDING_CHECK_TIMEOUT)); - return await checkImplicitFunded(); - } - } catch (e: any) { - if (!/does not exist/gi.test(e.toString())) { - throw e; - } - logger.log("not funded, checking again"); - await new Promise((r) => setTimeout(r, FUNDING_CHECK_TIMEOUT)); - return await checkImplicitFunded(); - } - return true; - }; - /// if not funded properly, return and reload - if (!(await checkImplicitFunded())) { - return window.location.reload(); - } - logger.log("implicit account funded", implicitAccountId); - - if (postFundingCB) { - postFundingCB(); - } - - const { account, ethAddress } = await setupFromStorage(implicitAccountId); - - /// final checks, last chance to cancel funding if they fail - if (await accountExists(newAccountId, ethAddress)) { - alert(`${newAccountId} already exists. Please try another.`); - return await handleCancelFunding(implicitAccountId); - } - - /// create account now - - /// get keypair from eth sig entropy for the near-eth account - const { publicKey: new_public_key, secretKey: new_secret_key } = - await keyPairFromEthSig( - signer, - unlimitedKeyPayload(newAccountId, ethAddress) - ); - await storage.setItem(ATTEMPT_SECRET_KEY, new_secret_key); - // remove any existing app key - await storage.removeItem(APP_KEY_ACCOUNT_ID); - await storage.removeItem(APP_KEY_SECRET); - - try { - await account.functionCall({ - contractId: NETWORK[networkId].ROOT_ACCOUNT_ID, - methodName: "create_account", - args: { - new_account_id: newAccountId, - new_public_key, - }, - gas, - attachedDeposit: BigInt(MIN_NEW_ACCOUNT as string), - }); - } catch (e) { - if (!/be created by/.test(JSON.stringify(e))) { - throw e; - } - return handleCancelFunding(implicitAccountId); - } - /// check - if (!(await accountExists(newAccountId))) { - return logger.log( - `Account ${newAccountId} could NOT be created. Please refresh the page and try again.` - ); - } - logger.log(`Account ${newAccountId} created successfully.`); - /// drain implicit - await account.deleteAccount(newAccountId); - - return await handleMapping(); -}; - -export const handleCancelFunding = async (fundingAccountId) => { - const { account } = await setupFromStorage(fundingAccountId); - const refundAccountId = window.prompt( - `There was an error creating the account. You need to refund and try again. Please enter the account you funded from. MAKE SURE IT IS CORRECT. THIS CANNOT BE UNDONE.` - ); - /// drain implicit - try { - await account.deleteAccount(refundAccountId as string); - } catch (e) { - logger.log("Cannot delete implicit"); - } finally { - /// delete attempt - await storage.removeItem(ATTEMPT_ACCOUNT_ID); - await storage.removeItem(ATTEMPT_SECRET_KEY); - await storage.removeItem(ATTEMPT_ETH_ADDRESS); - } -}; - -export const handleMapping = async () => { - const { account, ethAddress } = await setupFromStorage(); - try { - await account.functionCall({ - contractId: NETWORK[networkId].MAP_ACCOUNT_ID, - methodName: "set", - args: { eth_address: ethAddress }, - gas, - attachedDeposit: BigInt(attachedDepositMapping as string), - }); - logger.log(`Account mapping successful`); - } catch (e) { - logger.log(e); - return logger.log(`Account mapping failed`); - } - return await handleDeployContract(); -}; - -export const handleDeployContract = async () => { - const { account } = await setupFromStorage(); - - const contractPath = window?.contractPath; - // logger.log(contractPath) - const ab = await fetch(contractPath as string).then((res) => - res.arrayBuffer() - ); - const contractBytes = new Uint8Array(ab); - // logger.log("contractBytes.length", contractBytes.length); - try { - await account.deployContract(contractBytes); - logger.log(`Contract deployed successfully.`); - } catch (e) { - logger.log(e); - return logger.log(`Contract deployment failed. ${REFRESH_MSG}`); - } - - return await handleSetupContract(); -}; - -export const handleSetupContract = async () => { - const { account, ethAddress } = await setupFromStorage(); - - try { - await account.functionCall({ - contractId: account.accountId, - methodName: "setup", - args: { eth_address: ethAddress }, - gas, - }); - logger.log(`Contract setup successfully.`); - } catch (e) { - logger.log(e); - return logger.log(`Contract setup failed. ${REFRESH_MSG}`); - } - - return await handleKeys(); -}; - -export const handleKeys = async () => { - const { account, newAccountId, ethAddress } = await setupFromStorage(); - const accessKeys = await account.getAccessKeys(); - // keys are done - if ( - accessKeys.length !== 1 || - accessKeys[0]?.access_key?.permission !== "FullAccess" - ) { - return; - } - const publicKey = PublicKey.from(accessKeys[0].public_key); - const actions = [ - // delete the full access key - deleteKey(publicKey), - // limited to execute, unlimited allowance - addKey(publicKey, functionCallAccessKey(newAccountId, ["execute"])), - ]; - try { - const res = await (account as any).signAndSendTransaction({ - receiverId: newAccountId, - actions, - }); - if (res?.status?.SuccessValue !== "") { - return logger.log(`Key rotation failed. ${REFRESH_MSG}`); - } - logger.log(`Key rotation successful.`); - } catch (e) { - logger.log(e); - return logger.log(`Key rotation failed. ${REFRESH_MSG}`); - } - return await handleCheckAccount({ ethAddress }); -}; - -/// waterfall check everything about account and fill in missing pieces - -export const handleCheckAccount = async ({ - signer = null, - ethAddress = null, - fundingAccountCB = null, - fundingErrorCB = null, - postFundingCB = null, -}) => { - const setup = await setupFromStorage(); - let { newAccountId } = setup; - const { newSecretKey } = setup; - - const mapAccountId = await getNearMap(ethAddress); - if (!mapAccountId) { - // alert("create account first"); - logger.log("No account mapping exists."); - } else { - newAccountId = mapAccountId; - } - - logger.log("Checking account created."); - if (!(await accountExists(newAccountId))) { - const keyPair = KeyPair.fromString(newSecretKey); - return createAccount({ - signer, - newAccountId, - fundingAccountPubKey: keyPair.getPublicKey().toString(), - fundingAccountCB, - fundingErrorCB, - postFundingCB, - }); - } - - const account = new Account(connection, newAccountId); - - logger.log("Checking account address mapping."); - const mapRes = await account.viewFunction({ - contractId: NETWORK[networkId].MAP_ACCOUNT_ID, - methodName: "get_eth", - args: { - account_id: newAccountId, - }, - }); - if (mapRes === null) { - return handleMapping(); - } - - logger.log("Checking contract deployed."); - const state = await account.state(); - if (state.code_hash === "11111111111111111111111111111111") { - return handleDeployContract(); - } - - logger.log("Checking contract setup."); - try { - const ethRes = await account.viewFunction({ - contractId: newAccountId, - methodName: "get_address", - }); - // any reason the address wasn't set properly - if (!ethRes || !ethRes.length) { - return handleSetupContract(); - } - } catch (e) { - // not set at all (wasm error unreachable storage value) - logger.log(e); - return handleSetupContract(); - } - - logger.log("Checking access keys."); - const accessKeys = await account.getAccessKeys(); - if ( - accessKeys.length === 1 && - accessKeys[0]?.access_key?.permission === "FullAccess" - ) { - return handleKeys(); - } - - logger.log("Account created."); - logger.log("Contract deployed and setup."); - logger.log("Mapping added."); - logger.log("Keys rotated."); - - await storage.removeItem(ATTEMPT_ACCOUNT_ID); - await storage.removeItem(ATTEMPT_SECRET_KEY); - await storage.removeItem(ATTEMPT_ETH_ADDRESS); - - return { account }; -}; - -/// on same domain as setup - -export const hasAppKey = (accessKeys) => - accessKeys.some((k) => { - const functionCallPermission = k?.access_key?.permission?.FunctionCall; - return ( - functionCallPermission.allowance !== null && - functionCallPermission.method_names[0] === "execute" - ); - }); - -export const handleRefreshAppKey = async (signer, ethAddress) => { - const { account, accountId } = await getUnlimitedKeyAccount( - signer, - ethAddress - ); - - // now refresh app key - const nonce = parseInt( - await account.viewFunction({ - contractId: accountId, - methodName: "get_nonce", - }), - 16 - ).toString(); - // new public key based on current nonce which will become the app_key_nonce in contract after this TX - const { publicKey, secretKey } = await keyPairFromEthSig( - signer, - appKeyPayload(accountId, nonce) - ); - // logger.log(publicKey); - const public_key = pub2hex(publicKey); - const actions: Array = [ - { - type: "AddKey", - public_key, - allowance: parseNearAmount("1"), - receiver_id: accountId, - method_names: "execute", - }, - ]; - /// check keys, find old app key, delete that first - const accessKeys = await account.getAccessKeys(); - if (hasAppKey(accessKeys)) { - // old public key based on current app_key_nonce - const appKeyNonce = parseInt( - await account.viewFunction({ - contractId: accountId, - methodName: "get_app_key_nonce", - }), - 16 - ).toString(); - const { publicKey: oldPublicKey } = await keyPairFromEthSig( - signer, - appKeyPayload(accountId, appKeyNonce) - ); - const oldPublicKeyHex = pub2hex(oldPublicKey); - actions.unshift({ - type: "DeleteKey", - public_key: oldPublicKeyHex, - }); - } - /// get args for execute call - const args = await ethSignJson(signer, { - nonce, - receivers: [accountId], - transactions: [ - { - actions, - }, - ], - }); - const res = await account.functionCall({ - contractId: accountId, - methodName: "execute", - args, - gas, - }); - - if (res?.status?.SuccessValue !== "") { - return logger.log(`App key rotation unsuccessful. ${REFRESH_MSG}`); - } - await storage.removeItem(APP_KEY_SECRET); - await storage.removeItem(APP_KEY_ACCOUNT_ID); - return { publicKey: public_key, secretKey }; -}; - -export const handleUpdateContract = async (signer, ethAddress) => { - const { account, accountId } = await getUnlimitedKeyAccount( - signer, - ethAddress - ); - - const contractPath = window?.contractPath; - const ab = await fetch(contractPath as string).then((res) => - res.arrayBuffer() - ); - const contractBytes = new Uint8Array(ab); - const actions = [ - { - type: "DeployContract", - code: buf2hex(contractBytes), - }, - ]; - const nonce = parseInt( - await account.viewFunction({ - contractId: accountId, - methodName: "get_nonce", - }), - 16 - ).toString(); - const args = await ethSignJson(signer, { - nonce, - receivers: [accountId], - transactions: [ - { - actions, - }, - ], - }); - const res = await account.functionCall({ - contractId: accountId, - methodName: "execute", - args, - gas, - }); - if (res?.status?.SuccessValue !== "") { - return logger.log(`Redeply contract unsuccessful. ${REFRESH_MSG}`); - } -}; - -/// account disconnecting flow - -export const handleDisconnect = async (signer, ethAddress) => { - const { account, accountId, secretKey } = await getUnlimitedKeyAccount( - signer, - ethAddress - ); - - const { - seedPhrase, - publicKey, - secretKey: newSecretKey, - } = generateSeedPhrase(); - const _seedPhrase = window.prompt( - "Copy this down and keep it safe!!! This is your new seed phrase!!!", - seedPhrase - ); - if (seedPhrase !== _seedPhrase) { - return alert( - "There was an error copying seed phrase. Nothing has been done. Please try again." - ); - } - const oldUnlimitedKey = KeyPair.fromString(secretKey); - - const actions = [ - { - type: "DeleteKey", - public_key: pub2hex(oldUnlimitedKey.getPublicKey().toString()), - }, - { - type: "AddKey", - public_key: pub2hex(publicKey), - // special case will add full access key - allowance: "0", - }, - { - type: "FunctionCall", - method_name: "remove_storage", - args: "", - amount: "0", - gas: halfGas, - }, - { - type: "DeployContract", - code: "", - }, - ]; - /// check keys, find old app key, delete that first - const accessKeys = await account.getAccessKeys(); - if ( - accessKeys.some((k) => { - const functionCallPermission = k?.access_key?.permission?.FunctionCall; - return ( - functionCallPermission?.allowance !== null && - functionCallPermission?.method_names[0] === "execute" - ); - }) - ) { - const appKeyNonce = parseInt( - await account.viewFunction({ - contractId: accountId, - methodName: "get_app_key_nonce", - }), - 16 - ).toString(); - const { publicKey: oldPublicKey } = await keyPairFromEthSig( - signer, - appKeyPayload(accountId, appKeyNonce) - ); - const oldPublicKeyHex = pub2hex(oldPublicKey); - actions.unshift({ - type: "DeleteKey", - public_key: oldPublicKeyHex, - }); - } - - /// get args for execute call - const nonce = parseInt( - await account.viewFunction({ - contractId: accountId, - methodName: "get_nonce", - }), - 16 - ).toString(); - const args = await ethSignJson(signer, { - nonce, - receivers: [accountId], - transactions: [ - { - actions, - }, - ], - }); - const res = await account.functionCall({ - contractId: accountId, - methodName: "execute", - args, - gas, - }); - - if (res?.status?.SuccessValue !== "") { - return logger.log("app key rotation unsuccessful"); - } - - // remove the mapping (can do this later if user has FAK) - - keyStore.setKey(networkId, accountId, newSecretKey); - try { - const mapRes = await account.functionCall({ - contractId: NETWORK[networkId].MAP_ACCOUNT_ID, - methodName: "del", - args: {}, - gas, - }); - logger.log(mapRes); - if (mapRes?.status?.SuccessValue !== "") { - logger.log("account mapping removal failed"); - } - } catch (e) { - logger.log(e); - } - - return { account }; -}; - -/// helpers for account creation and connection domain - -const setupFromStorage = async (accountId = "") => { - const newAccountId = - accountId.length > 0 - ? accountId - : await storage.getItem(ATTEMPT_ACCOUNT_ID); - const newSecretKey = await storage.getItem(ATTEMPT_SECRET_KEY); - const ethAddress = await storage.getItem(ATTEMPT_ETH_ADDRESS); - const account = new Account(connection, newAccountId); - let keyPair; - if (newSecretKey) { - keyPair = KeyPair.fromString(newSecretKey); - keyStore.setKey(networkId, newAccountId, keyPair); - } - return { newAccountId, newSecretKey, ethAddress, account, keyPair }; -}; - -const getUnlimitedKeyAccount = async ( - signer, - ethAddress, - tryPrevUrl = false -) => { - let accountId, - secretKey = await storage.getItem(ATTEMPT_SECRET_KEY); - // if unlimited allowance access key is not in localStorage user will have to sign to generate it - if (!secretKey) { - // TODO remove dep on near-utils - // use any random near account to check mapping - accountId = await getNearMap(ethAddress); - const { secretKey: _secretKey } = await keyPairFromEthSig( - signer, - unlimitedKeyPayload(accountId, tryPrevUrl) - ); - secretKey = _secretKey; - } else { - accountId = await storage.getItem(ATTEMPT_ACCOUNT_ID); - } - const account = new Account(connection, accountId); - const keyPair = KeyPair.fromString(secretKey); - const publicKey = keyPair.getPublicKey().toString(); - /// check if access key matches - const accessKeys = await account.getAccessKeys(); - if (!accessKeys.some(({ public_key }) => publicKey === public_key)) { - return await getUnlimitedKeyAccount(signer, ethAddress, true); - } - - keyStore.setKey(networkId, accountId, keyPair); - return { account, accountId, secretKey }; -}; - -/** - * The access key payloads, unlimited and limited - */ - -const appKeyPayload = (accountId, appKeyNonce) => ({ - WARNING: `Creating key for: ${accountId}`, - nonce: appKeyNonce, - description: `ONLY sign this on apps you trust! This key CAN use up to 1 N for transactions.`, -}); - -const unlimitedKeyPayload = (accountId, tryPrevUrl) => ({ - WARNING: `Creates a key with access to your (new) paired NEAR Account: ${accountId}`, - description: `ONLY sign this message on this website: ${ - tryPrevUrl ? PREV_NETH_SITE_URL : NETH_SITE_URL - }`, -}); - -const fundingKeyPayload = () => ({ - WARNING: `This creates a full access key in your localStorage to a funding account you will be sending NEAR to.`, - description: `ONLY sign this message on this website: ${NETH_SITE_URL}`, -}); - -/** - * main domain, types and eth signTypedData method - */ - -const domain = { - name: "NETH", - version: "1", - // chainId: 1, // aurora - chainId: 1313161554, // aurora -}; - -const HEADER_OFFSET = "NETH"; -const HEADER_PAD = 8; -const RECEIVER_MARKER = "|~-_NETH~-_-~RECEIVER_-~|"; -const PREFIX = "|NETH_"; -const SUFFIX = "_NETH|"; - -const pack = (elements) => - elements - .map((el) => { - const str = - typeof el === "string" - ? el - : Object.entries(el) - .map( - ([k, v]) => - `${PREFIX}${k}:${ - typeof v === "string" ? v : JSON.stringify(v) - }${SUFFIX}` - ) - .join(""); - - const len = str.length.toString().padStart(HEADER_PAD, "0"); - - return HEADER_OFFSET + len + "__" + str; - }) - .join(""); - -const ethSignJson = async (signer, json) => { - const Transaction: Array = []; - const types = { Transaction }; - Object.entries(json).forEach(([k]) => { - types.Transaction.push({ - type: "string", - name: k, - }); - }); - /// convenience for devs so they can pass in JSON - - /// hoist any functionCall args containing receiver|account in their key to top level receivers - /// replaces value with marker, contract fills in marker - - if (json.transactions) { - Object.values(json.transactions).forEach((tx: any, i) => { - tx.actions.forEach((action) => { - if (!action.args) { - return; - } - if (Buffer.isBuffer(action.args)) { - action.args = "0x" + action.args.toString("hex"); - return; - } - Object.entries(action.args).forEach(([key, value]) => { - /// TODO include check on value to determine valid account_id to be replaced - - if (/receiver_id|account_id/g.test(key)) { - action.args[key] = RECEIVER_MARKER; - json.receivers.splice(i + 1, 0, value); - } - }); - }); - }); - - json.transactions = pack( - json.transactions.map(({ actions }) => pack(actions)) - ); - } - if (json.receivers) { - const numReceivers = json.receivers.length.toString(); - json.receivers = - HEADER_OFFSET + - json.receivers.join(",").length.toString().padStart(HEADER_PAD, "0") + - "__" + - json.receivers.join(","); - json.receivers = - json.receivers.substring(0, 4) + - numReceivers.padStart(3, "0") + - json.receivers.substring(7); - } - - const sig = await signer._signTypedData(domain, types, json); - - const args = { - sig, - msg: json, - }; - // logger.log('\nargs\n', JSON.stringify(args, null, 4), '\n'); - return args; -}; - -const keyPairFromEthSig = async (signer, json) => { - const { sig } = await ethSignJson(signer, json); - const sigHash = ethers.utils.id(sig); - /// use 32 bytes of entropy from hash of signature to create NEAR keyPair - return generateSeedPhrase(sigHash.substring(2, 34)); -}; - -/** - * Used by apps to signIn and signAndSendTransactions - */ - -/// ethereum - -export const getEthereum = async () => { - const provider = await detectEthereumProvider(); - - if (!provider) { - return alert("Please install/activate MetaMask and try again."); - } - - try { - await window.ethereum.request({ - method: "wallet_switchEthereumChain", - params: [{ chainId: "0x" + domain.chainId.toString(16) }], - }); - } catch (e: any) { - logger.log(e); - const code = e?.code || e?.data?.originalError?.code; - if (code !== 4902) { - throw e; - } - - try { - await window.ethereum.request({ - method: "wallet_addEthereumChain", - params: [ - { - chainId: "0x" + domain.chainId.toString(16), - chainName: "Aurora Mainnet", - nativeCurrency: { - name: "Ethereum", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrls: ["https://explorer.mainnet.aurora.dev/"], - fallbackRpcUrls: ["https://mainnet.aurora.dev"], - }, - ], - }); - } catch (e2) { - alert( - 'Error adding chain. Please click "Choose Ethereum Account" and add the Aurora Network to continue.' - ); - throw e2; - } - } - - const ethersProvider = new ethers.providers.Web3Provider(window.ethereum); - const accounts = await ethersProvider.listAccounts(); - if (accounts.length === 0) { - await ethersProvider.send("eth_requestAccounts", []); - } - const signer = ethersProvider.getSigner(); - - return { signer, ethAddress: await signer.getAddress() }; -}; - -export const switchEthereum = async () => { - const provider = (await detectEthereumProvider()) as any; - await provider.send("wallet_requestPermissions", [{ eth_accounts: {} }]); - const ethersProvider = new ethers.providers.Web3Provider(window.ethereum); - const signer = ethersProvider.getSigner(); - return { signer, ethAddress: await signer.getAddress() }; -}; - -/// near - -export const getNearMap = async (eth_address) => { - return contractAccount.viewFunction({ - contractId: NETWORK[networkId].MAP_ACCOUNT_ID, - methodName: "get_near", - args: { - eth_address, - }, - }); -}; - -export const getNear = async (): Promise< - | false - | { - account: NearAccount; - accountId: string; - keyPair: NearKeyPair; - secretKey: string; - } -> => { - const secretKey = await storage.getItem(APP_KEY_SECRET); - const accountId = await storage.getItem(APP_KEY_ACCOUNT_ID); - if (!secretKey || !accountId) { - const ethRes: any = await getEthereum(); - const res = await getAppKey(ethRes); - if (!res) { - return false; - } - return await getNear(); - } - const account = new Account(connection, accountId); - const keyPair = KeyPair.fromString(secretKey); - keyStore.setKey(networkId, accountId, keyPair); - - return { account, accountId, keyPair, secretKey }; -}; - -export const signIn = getNear; - -export const signOut = async () => { - const accountId = await storage.getItem(APP_KEY_ACCOUNT_ID); - if (!accountId) { - return logger.log("already signed out"); - } - await storage.removeItem(APP_KEY_SECRET); - await storage.removeItem(APP_KEY_ACCOUNT_ID); - return { accountId }; -}; - -export const verifyOwner = async ({ message, provider, account }) => { - let accountId; - if (!account) { - const nearAccount = await getNear(); - if (nearAccount) { - ({ account, accountId } = nearAccount); - } - } else { - ({ accountId } = account); - } - - if (!account) { - throw new Error("Wallet not signed in"); - } - - const pubKey = await account.connection.signer.getPublicKey( - accountId, - networkId - ); - const publicKey = Buffer.from(pubKey.data).toString("base64"); - const block = await provider.block({ finality: "final" }); - const blockId = block.header.hash; - - const data = { - accountId, - message, - blockId, - publicKey, - keyType: pubKey.keyType, - }; - const encoded = JSON.stringify(data); - - const signed = await account.connection.signer.signMessage( - new Uint8Array(Buffer.from(encoded)), - accountId, - networkId - ); - - return { - ...data, - signature: Buffer.from(signed.signature).toString("base64"), - }; -}; - -export const isSignedIn = async () => { - /// init defaultStorage here because it's not initialized until initConnection - const tempStorage = defaultStorage(WS_STORAGE_NAMESPACE); - return ( - !!(await tempStorage.getItem(APP_KEY_SECRET)) || - !!(await tempStorage.getItem(APP_KEY_ACCOUNT_ID)) - ); -}; - -// const promptValidAccountId = async (msg) => { -// const newAccountId = window.prompt(msg); -// if (!newAccountId) { -// throw new Error("NETH Error: failed to pick valid NEAR account name"); -// } -// if ( -// newAccountId.length < 2 || -// newAccountId.indexOf(".") > -1 || -// !ACCOUNT_REGEX.test(newAccountId) || -// newAccountId.length > 64 -// ) { -// return promptValidAccountId( -// `account is invalid (a-z, 0-9 and -,_ only; min 2; max 64; ${accountSuffix} applied automatically)` -// ); -// } -// if (await accountExists(newAccountId)) { -// return promptValidAccountId(`account already exists`); -// } -// return newAccountId; -// }; - -export const getAppKey = async ({ signer, ethAddress: eth_address }) => { - const accountId = await getNearMap(eth_address); - - if (!accountId) { - const tryAgain = window.confirm( - `Ethereum account ${eth_address} is not connected to a NETH account. Would you like to try another Ethereum account?` - ); - - if (tryAgain) { - try { - const { signer: _signer, ethAddress } = await switchEthereum(); - return await getAppKey({ signer: _signer, ethAddress }); - } catch (e) { - logger.log(e); - } - return; - } - - const nethURL = `${NETH_SITE_URL}/${ - networkId === "testnet" ? "?network=testnet" : "" - }`; - window.prompt( - `We couldn't find a NETH account. To set up a NETH account visit`, - nethURL - ); - - // throw new Error(`Ethereum account is not connected to a NETH account. To set up a NETH account visit: ${nethURL}`) - // /// prompt for near account name and auto deploy - // const newAccountId = await promptValidAccountId( - // `The Ethereum address ${eth_address} is not connected to a NEAR account yet. Select a NEAR account name and we'll create and connect one for you.`, - // ); - // const { account } = await handleCreate(signer, eth_address, newAccountId + accountSuffix); - // accountId = account.accountId; - } - const appKeyNonce = parseInt( - await contractAccount.viewFunction({ - contractId: accountId, - methodName: "get_app_key_nonce", - }), - 16 - ).toString(); - const { publicKey, secretKey } = await keyPairFromEthSig( - signer, - appKeyPayload(accountId, appKeyNonce) - ); - const account = new Account(connection, accountId); - // check that app key exists on account - const accessKeys = await account.getAccessKeys(); - if (!hasAppKey(accessKeys)) { - await handleRefreshAppKey(signer, eth_address); - } - const keyPair = KeyPair.fromString(secretKey); - keyStore.setKey(networkId, accountId, keyPair); - await storage.setItem(APP_KEY_SECRET, secretKey); - await storage.setItem(APP_KEY_ACCOUNT_ID, account.accountId); - return { publicKey, secretKey, account }; -}; - -const broadcastTXs = async () => { - const nearAccount = await getNear(); - if (!nearAccount) { - logger.log("NETH: ERROR broadcasting tx. No account found."); - return; - } - const { account, accountId } = nearAccount; - const args = await storage.getItem(TX_ARGS_ATTEMPT); - if (!args || args.length === 0) { - return; - } - - const res: Array = []; - while (args.length > 0) { - const currentArgs = args.shift(); - logger.log("NETH: broadcasting tx", currentArgs); - try { - const tx = await account.functionCall({ - contractId: accountId, - methodName: "execute", - args: currentArgs, - gas, - }); - await storage.setItem(TX_ARGS_ATTEMPT, args); - res.push(tx); - } catch (e) { - logger.log("NETH: ERROR broadcasting tx", e); - } - } - await storage.removeItem(TX_ARGS_ATTEMPT); - return res; -}; - -export const signAndSendTransactions = async ({ transactions, bundle }) => { - const ethRes: any = await getEthereum(); - const { signer } = ethRes; - const nearAccount = await getNear(); - if (!nearAccount) { - logger.log( - "NETH: ERROR signing and sending transactions. No account found." - ); - return; - } - const { account, accountId } = nearAccount; - - const receivers = transactions.map(({ receiverId }) => receiverId); - const transformedTxs = transactions.map(({ receiverId, actions }) => ({ - actions: convertActions(actions, accountId, receiverId), - })); - - const nonce = parseInt( - await account.viewFunction({ - contractId: accountId, - methodName: "get_nonce", - }), - 16 - ); - const args: Array = []; - if (!bundle) { - for (let i = 0; i < transformedTxs.length; i++) { - args.push( - await ethSignJson(signer, { - nonce: (nonce + i).toString(), - receivers: [receivers[i]], - transactions: [transformedTxs[i]], - }) - ); - } - } else { - args.push( - await ethSignJson(signer, { - nonce: nonce.toString(), - receivers, - transactions: transformedTxs, - }) - ); - } - - await storage.setItem(TX_ARGS_ATTEMPT, args); - - const res = await broadcastTXs(); - - return res; -}; - -/// helpers - -export const convertActions = (actions, accountId, receiverId) => - actions.map((_action) => { - const { enum: type } = _action; - const { - gas: _gas, - publicKey, - methodName, - args, - deposit, - accessKey, - code, - } = _action[type] || _action; - - const action: any = { - type: (type && type[0].toUpperCase() + type.substr(1)) || "FunctionCall", - gas: (_gas && _gas.toString()) || undefined, - public_key: (publicKey && pub2hex(publicKey)) || undefined, - method_name: methodName, - args: args || undefined, - code: code || undefined, - amount: (deposit && deposit.toString()) || undefined, - permission: undefined, - }; - - Object.keys(action).forEach((k) => { - if (action[k] === undefined) { - delete action[k]; - } - }); - - if (accessKey) { - if (receiverId === accountId) { - action.allowance = parseNearAmount("1"); - action.method_names = "execute"; - action.receiver_id = accountId; - } else if (accessKey.permission.enum === "functionCall") { - const { - receiverId: _receiverId, - methodNames, - allowance, - } = accessKey.permission.functionCall; - action.receiver_id = _receiverId; - action.allowance = - (allowance && allowance.toString()) || parseNearAmount("0.25"); - action.method_names = methodNames.join(","); - } - } - - return action; - }); diff --git a/packages/neth/src/lib/neth.ts b/packages/neth/src/lib/neth.ts deleted file mode 100644 index 3bcce1445..000000000 --- a/packages/neth/src/lib/neth.ts +++ /dev/null @@ -1,216 +0,0 @@ -// @ts-nocheck -import type { - WalletModuleFactory, - InjectedWallet, - Action, - FunctionCallAction, - WalletBehaviourFactory, -} from "@near-wallet-selector/core"; -import detectEthereumProvider from "@metamask/detect-provider"; -import { nethIcon } from "../assets/icons"; -import { - getNear, - signIn, - signOut, - verifyOwner, - isSignedIn, - signAndSendTransactions, - initConnection, - NETH_SITE_URL, -} from "./neth-lib"; -import isMobile from "is-mobile"; -export { initConnection } from "./neth-lib"; - -declare global { - interface Window { - contractPath: string | null; - ethereum: { - chainId: string; - // eslint-disable-next-line - request: any; - }; - } -} - -export interface NethParams { - // default NETH icon included - iconUrl?: string; - // default 200 Tgas - for each NETH transaction (bundling can include multiple "inner" transactions) - gas?: string; - // default false - cover screen with rgba(0, 0, 0, 0.5) mask while signing and awaiting transaction outcome - useModalCover?: boolean; - // default true - signAndSendTransactions will be bundled into 1 NETH TX - bundle?: boolean; - // default false - deprecated?: boolean; -} - -const isInstalled = async () => { - await detectEthereumProvider({ timeout: 100 }); - return !!window.ethereum; -}; - -let bundle = true; -let useCover = false; -let customGas; - -const Neth: WalletBehaviourFactory = async ({ - metadata, - logger, - store, - storage, - options, - provider, -}) => { - const cover = initConnection({ - network: options.network, - gas: customGas, - logger, - storage, - }); - - const isValidActions = ( - actions: Array - ): actions is Array => { - return actions.every((x) => x.type === "FunctionCall"); - }; - - const transformActions = (actions: Array) => { - const validActions = isValidActions(actions); - - if (!validActions) { - throw new Error( - `Only 'FunctionCall' actions types are supported by ${metadata.name}` - ); - } - - return actions.map((x) => x.params); - }; - - const signTransactions = async (transactions) => { - logger.log("NETH:signAndSendTransactions", { transactions }); - - const { contract } = store.getState(); - - if (!(await isSignedIn()) || !contract) { - throw new Error("Wallet not signed in"); - } - - if (useCover) { - cover.style.display = "block"; - } - - const transformedTxs = transactions.map(({ receiverId, actions }) => ({ - receiverId: receiverId || contract.contractId, - actions: transformActions(actions), - })); - - let res; - try { - res = await signAndSendTransactions({ - transactions: transformedTxs, - bundle, - }); - } catch (e) { - /// "user rejected signing" or near network error - logger.log("NETH:signAndSendTransactions Error", e); - throw e; - } - - if (useCover) { - cover.style.display = "none"; - } - - return res; - }; - - // return the wallet interface for wallet-selector - return { - async signIn() { - let account; - try { - account = await signIn(); - if (!account) { - return []; - } - } catch (e) { - if (!/not connected/.test((e as object).toString())) { - throw e; - } - // console.log(e); - } - return [account]; - }, - - async signOut() { - await signOut(); - }, - - async verifyOwner({ message }) { - logger.log("NETH:verifyOwner", { message }); - return verifyOwner({ message, provider, account: null }); - }, - - async getAccounts() { - const near = await getNear(); - if (!near) { - logger.log("NETH:getAccounts"); - return []; - } - const { account, accountId } = near; - return [ - { - accountId, - publicKey: ( - await account.connection.signer.getPublicKey( - account.accountId, - options.network.networkId - ) - ).toString(), - }, - ]; - }, - - signAndSendTransaction: async ({ receiverId, actions }) => - signTransactions([{ receiverId, actions }]), - - signAndSendTransactions: async ({ transactions }) => - signTransactions(transactions), - }; -}; - -export function setupNeth({ - iconUrl = nethIcon, - gas, - useModalCover = false, - bundle: _bundle = true, - deprecated = false, -}: NethParams = {}): WalletModuleFactory { - return async () => { - useCover = useModalCover; - customGas = gas; - bundle = _bundle; - - const mobile = isMobile(); - if (mobile) { - return null; - } - - const installed = await isInstalled(); - - return { - id: "neth", - type: "injected", - metadata: { - name: "NETH Account", - description: null, - iconUrl, - downloadUrl: NETH_SITE_URL, - deprecated: false, - available: installed, - }, - deprecated, - init: Neth, - }; - }; -} diff --git a/packages/neth/tsconfig.json b/packages/neth/tsconfig.json deleted file mode 100644 index f5667adda..000000000 --- a/packages/neth/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "allowJs": true, - "noImplicitAny": false, - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] - } - \ No newline at end of file diff --git a/packages/neth/tsconfig.lib.json b/packages/neth/tsconfig.lib.json deleted file mode 100644 index 10ab47269..000000000 --- a/packages/neth/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts", "src/lib/neth-lib.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/neth/tsconfig.spec.json b/packages/neth/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/neth/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/neth/yarn.lock b/packages/neth/yarn.lock deleted file mode 100644 index fb57ccd13..000000000 --- a/packages/neth/yarn.lock +++ /dev/null @@ -1,4 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - diff --git a/packages/nightly/.babelrc b/packages/nightly/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/nightly/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/nightly/.eslintrc.json b/packages/nightly/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/nightly/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/nightly/README.md b/packages/nightly/README.md deleted file mode 100644 index 3d266373e..000000000 --- a/packages/nightly/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# @near-wallet-selector/nightly - - -This is the [Nightly](https://wallet.nightly.app/) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` - -```bash -# Using Yarn -yarn add @near-wallet-selector/nightly - -# Using NPM. -npm install @near-wallet-selector/nightly -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupNightly } from "@near-wallet-selector/nightly"; - -// Nightly for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const nightly = setupNightly({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [nightly], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/nightly-icon.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupNightly } from "@near-wallet-selector/nightly"; -import nightlyIconUrl from "@near-wallet-selector/nightly/assets/nightly.png"; - -const nightly = setupNightly({ - iconUrl: nightlyIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/nightly/assets/nightly.png b/packages/nightly/assets/nightly.png deleted file mode 100644 index bd3e87387..000000000 Binary files a/packages/nightly/assets/nightly.png and /dev/null differ diff --git a/packages/nightly/jest.config.js b/packages/nightly/jest.config.js deleted file mode 100644 index 888413e45..000000000 --- a/packages/nightly/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "nightly", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/nightly", -}; diff --git a/packages/nightly/jest.config.ts b/packages/nightly/jest.config.ts deleted file mode 100644 index daa1732e2..000000000 --- a/packages/nightly/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "nightly", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/nightly", -}; diff --git a/packages/nightly/package.json b/packages/nightly/package.json deleted file mode 100644 index 5f3aa2230..000000000 --- a/packages/nightly/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/nightly", - "version": "8.9.13", - "description": "Nightly wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "nightly wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/nightly" -} diff --git a/packages/nightly/project.json b/packages/nightly/project.json deleted file mode 100644 index b66d7aca6..000000000 --- a/packages/nightly/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "nightly", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/nightly/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/nightly", - "tsConfig": "packages/nightly/tsconfig.lib.json", - "project": "packages/nightly/package.json", - "entryFile": "packages/nightly/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/nightly/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/nightly/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/nightly/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/nightly"], - "options": { - "jestConfig": "packages/nightly/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/nightly/src/index.ts b/packages/nightly/src/index.ts deleted file mode 100644 index 2bff821e3..000000000 --- a/packages/nightly/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupNightly } from "./lib/nightly"; -export type { NightlyWalletParams } from "./lib/nightly"; diff --git a/packages/nightly/src/lib/icon.ts b/packages/nightly/src/lib/icon.ts deleted file mode 100644 index d6c346c2f..000000000 --- a/packages/nightly/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/nightly/src/lib/injected-nightly.ts b/packages/nightly/src/lib/injected-nightly.ts deleted file mode 100644 index 99a386370..000000000 --- a/packages/nightly/src/lib/injected-nightly.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { - AccountImportData, - SignedMessage, - SignMessageParams, -} from "@near-wallet-selector/core"; -import type { - SignedTransaction as NearSignedTransaction, - Transaction as NearTransaction, -} from "near-api-js/lib/transaction"; -import type { PublicKey as NearPublicKey } from "near-api-js/lib/utils"; -interface NightlyAccount { - accountId: string; - publicKey: NearPublicKey; -} -export interface NearNightly { - account: NightlyAccount; - isConnected: boolean; - signMessage: (params: SignMessageParams) => Promise; - signTransaction: ( - transaction: NearTransaction - ) => Promise; - signAllTransactions: ( - transaction: Array - ) => Promise>; - connect: ( - onAccountChange?: (acc?: NightlyAccount) => void, - eagerConnect?: boolean - ) => Promise; - disconnect: () => Promise; - importWalletsNear: (privKeys: Array) => Promise; -} -export interface InjectedNightly { - near: NearNightly; - invalidate: () => void; -} diff --git a/packages/nightly/src/lib/nightly.ts b/packages/nightly/src/lib/nightly.ts deleted file mode 100644 index 88ec87bac..000000000 --- a/packages/nightly/src/lib/nightly.ts +++ /dev/null @@ -1,285 +0,0 @@ -import type { - InjectedWallet, - WalletBehaviourFactory, - WalletModuleFactory, - WalletSelectorStore, - Optional, - Transaction, - EventEmitterService, - WalletEvents, - Account, -} from "@near-wallet-selector/core"; -import { waitFor } from "@near-wallet-selector/core"; -import { signTransactions } from "@near-wallet-selector/wallet-utils"; -import { isMobile } from "is-mobile"; -import type { Signer } from "near-api-js"; -import * as nearAPI from "near-api-js"; -import type { NearNightly, InjectedNightly } from "./injected-nightly"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; -import icon from "./icon"; - -declare global { - interface Window { - nightly: InjectedNightly | undefined; - } -} - -interface NightlyState { - wallet: NearNightly; -} - -const setupNightlyState = async ( - store: WalletSelectorStore, - emitter: EventEmitterService -): Promise => { - const { selectedWalletId } = store.getState(); - const wallet = window.nightly!.near!; - - // Attempt to reconnect wallet if previously selected. - if (selectedWalletId === "nightly") { - await wallet - .connect((newAcc) => { - if (!newAcc) { - emitter.emit("signedOut", null); - } else { - emitter.emit("accountsChanged", { - accounts: [ - { - accountId: newAcc.accountId, - publicKey: wallet.account.publicKey.toString(), - }, - ], - }); - } - }, true) - .catch(() => null); - } - - return { - wallet, - }; -}; -const isInstalled = () => { - return waitFor(() => !!window.nightly?.near, { timeout: 5000 }).catch( - () => false - ); -}; -const Nightly: WalletBehaviourFactory = async ({ - metadata, - options, - store, - logger, - provider, - emitter, -}) => { - const _state = await setupNightlyState(store, emitter); - - const getAccounts = (): Array => { - const { accountId, publicKey } = _state.wallet.account; - if (!accountId) { - return []; - } - - return [ - { - accountId, - publicKey: publicKey.toString(), - }, - ]; - }; - - const transformTransactions = ( - transactions: Array> - ): Array => { - const accounts = getAccounts(); - const { contract } = store.getState(); - - if (!accounts.length || !contract) { - throw new Error("Wallet not signed in"); - } - - return transactions.map((transaction) => { - return { - signerId: transaction.signerId || accounts[0].accountId, - receiverId: transaction.receiverId || contract.contractId, - actions: transaction.actions, - }; - }); - }; - - const signer: Signer = { - createKey: () => { - throw new Error("Not implemented"); - }, - getPublicKey: async (accountId) => { - const accounts = getAccounts(); - const account = accounts.find((a) => a.accountId === accountId); - - if (!account) { - throw new Error("Failed to find public key for account"); - } - return nearAPI.utils.PublicKey.from(account.publicKey!); - }, - signMessage: async (message, accountId) => { - const accounts = getAccounts(); - const account = accounts.find((a) => a.accountId === accountId); - - if (!account) { - throw new Error("Failed to find account for signing"); - } - - try { - const tx = nearAPI.transactions.Transaction.decode( - Buffer.from(message) - ); - const signedTx = await _state.wallet.signTransaction(tx); - - return { - signature: signedTx.signature.data, - publicKey: tx.publicKey, - }; - } catch (err) { - logger.log("Failed to sign message"); - logger.error(err); - - throw Error("Invalid message. Only transactions can be signed"); - } - }, - }; - - return { - async signIn() { - const existingAccounts = getAccounts(); - - if (existingAccounts.length) { - return existingAccounts; - } - - await _state.wallet.connect((newAcc) => { - if (!newAcc) { - emitter.emit("signedOut", null); - } else { - emitter.emit("accountsChanged", { - accounts: [ - { - accountId: newAcc.accountId, - publicKey: _state.wallet.account.publicKey.toString(), - }, - ], - }); - } - }); - - return getAccounts(); - }, - - async signOut() { - await _state.wallet.disconnect(); - }, - - async getAccounts() { - return getAccounts(); - }, - - async verifyOwner({ message }) { - logger.log("Nightly:verifyOwner", { message }); - - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signMessage({ message, nonce, recipient, state }) { - logger.log("Nightly:signMessage", { - message, - nonce, - recipient, - state, - }); - - if (!_state.wallet.isConnected) { - await _state.wallet.connect(); - } - - const signature = await _state.wallet.signMessage({ - message, - nonce, - recipient, - state, - }); - - return signature; - }, - - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - - const { contract } = store.getState(); - const accounts = getAccounts(); - - if (!accounts.length || !contract) { - throw new Error("Wallet not signed in"); - } - const [signedTx] = await signTransactions( - transformTransactions([{ signerId, receiverId, actions }]), - signer, - options.network - ); - - return provider.sendTransaction(signedTx); - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - const signedTxs = await signTransactions( - transformTransactions(transactions), - signer, - options.network - ); - - const results: Array = []; - - for (let i = 0; i < signedTxs.length; i++) { - results.push(await provider.sendTransaction(signedTxs[i])); - } - - return results; - }, - - async importAccountsInSecureContext(params) { - _state.wallet.importWalletsNear(params.accounts); - }, - }; -}; - -export interface NightlyWalletParams { - iconUrl?: string; - deprecated?: boolean; -} -export function setupNightly({ - iconUrl = icon, - deprecated = false, -}: NightlyWalletParams = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - - const installed = await isInstalled(); - - return { - id: "nightly", - type: "injected", - metadata: { - name: "Nightly", - description: "Multichain crypto wallet.", - iconUrl, - // Will replace we open beta with stable version - downloadUrl: "https://wallet.nightly.app/download", - deprecated, - available: installed, - }, - init: Nightly, - }; - }; -} diff --git a/packages/nightly/tsconfig.json b/packages/nightly/tsconfig.json deleted file mode 100644 index 8b6d6acaf..000000000 --- a/packages/nightly/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/nightly/tsconfig.lib.json b/packages/nightly/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/nightly/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/nightly/tsconfig.spec.json b/packages/nightly/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/nightly/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/nightly/wallet-security-criteria.md b/packages/nightly/wallet-security-criteria.md deleted file mode 100644 index a74407a5a..000000000 --- a/packages/nightly/wallet-security-criteria.md +++ /dev/null @@ -1,23 +0,0 @@ -The security of a wallet is based, in our view, on three key foundations: -- utilized technology -- conducted tests -- a team working on an app - -**Technology:** - -The technology highlighted as the first foundation should be understood not as a specific programming language, but as a structure used to safekeep the keys of private users. Some wallets keep the key data in local storage, which results in every website having access to them. Nightly’s approach to this topic is different - the key is stored in an encrypted version in Chrome Storage, which makes the data available only to the extension. Thanks to that, even if the user's computer is physically stolen, there is no way to reach the key data without knowing the user’s password that unlocks the wallet. In addition to that, the keys are decrypted only for a short moment of signing the transaction and immediately forgotten after that. We use the Ed25519 standard (the keys are Ed25519, encrypted by us with symmetrical encrypting) for encrypting our keys. Also, every network has separate private keys and an eventual leak doesn’t reveal other networks’ private keys. Still, every private key is generated from a single seed, so the user has to remember only one seed. -An important factor increasing our wallet’s security is that we are constantly monitoring the way in which blockchains sign transactions. In order to do that, we do not use default packages, which makes us immune to attacks resulting from SDK’s vulnerability and we are preparing our own solutions for every blockchain. Our key-storing architecture is very similar to that which is used by Metamask - a dependable and safe solution. Nightly supports hardware wallets, such as Ledger as well, where it serves as a transaction making interface, which makes full protection against private keys’ leak possible. The key-keeping and signing module is independent of the rest of the application - thanks to that, even in case of finding some vulnerabilities in other sections of the code, gaining access to encrypted private keys and signing transactions is impossible. Nightly doesn’t allow mutation of the “sign” command so that an attack based on including other transaction in the place of a transaction desired by the user is also impossible. Our wallet doesn’t support “autosign” (it only allows autoconnection to verified websites), making asset theft by an app harder, because the user’s approval is needed for every transaction. The keys are a sole property of the user, stored only on the device instead of an online storage and there is no other way to reach them than using seed. - -**Team:** - -The application’s core is written by Norbert Bodziony, who has large experience in the field of cryptography and knowledge of rules of dealing with keys, resulting from his previous work in his other projects, such as Synthetify or Invariant. Aforementioned projects have been proven through audits to not have any vulnerabilities, and have not suffered any damage resulting from an attack. Norbert is also frequently engaging in other projects in the role of advisor. Besides him, there are people with at least a year of experience in building blockchain apps working on our project. Our company also has victories in hackathons under its belt, such as MoveCTF lately. - -**Tests:** -Our app has been tested through various methods, including: -- Full tests -- End to end tests -- Simulation tests -- Visual tests -- Ledger connection tests -- In addition to these, every version goes through Quality Assurance procedure. Key modules have 100% coverage of their code - each and every one of the code lines is tested. Those tests are run automatically whenever there is a new version of the app. - diff --git a/packages/okx-wallet/.babelrc b/packages/okx-wallet/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/okx-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/okx-wallet/.eslintrc.json b/packages/okx-wallet/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/okx-wallet/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/okx-wallet/README.md b/packages/okx-wallet/README.md deleted file mode 100644 index 16b60622d..000000000 --- a/packages/okx-wallet/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# @near-wallet-selector/okx-wallet - -This is the [OKX Wallet](https://chromewebstore.google.com/detail/%E6%AC%A7%E6%98%93-web3-%E9%92%B1%E5%8C%85/mcohilncbfahbmgdjkbpemcciiolgcge) package for NEAR Wallet Selector. - -## Install OKX Wallet - -- [Chrome](https://chromewebstore.google.com/detail/%E6%AC%A7%E6%98%93-web3-%E9%92%B1%E5%8C%85/mcohilncbfahbmgdjkbpemcciiolgcge) -- [Safari](https://apps.apple.com/us/app/okx-wallet/id6463797825) -- [Edge](https://microsoftedge.microsoft.com/addons/detail/%E6%AC%A7%E6%98%93-web3-%E9%92%B1%E5%8C%85/pbpjkcldjiffchgbbndmhojiacbgflha) - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` -```bash -# Using Yarn -yarn add @near-wallet-selector/okx-wallet - -# Using NPM. -npm install @near-wallet-selector/okx-wallet -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupOKXWallet } from "@near-wallet-selector/okx-wallet"; - -// OKX Wallet for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const okxWallet = setupOKXWallet({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "mainnet", // OKX Wallet only supports NEAR Mainnet at the moment. - modules: [okxWallet], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults is `./assets/okx-wallet.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupOKXWallet } from "@near-wallet-selector/okx-wallet"; -import okxIconUrl from "@near-wallet-selector/okx-wallet/assets/okx-wallet.png"; - -const okxWallet = setupOKXWallet({ - iconUrl: okxIconUrl -}); -``` - -## Tip - -OKX Wallet only supports NEAR Mainnet at the moment. - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/okx-wallet/assets/okx-wallet.png b/packages/okx-wallet/assets/okx-wallet.png deleted file mode 100644 index 7e8ec1a85..000000000 Binary files a/packages/okx-wallet/assets/okx-wallet.png and /dev/null differ diff --git a/packages/okx-wallet/jest.config.ts b/packages/okx-wallet/jest.config.ts deleted file mode 100644 index a47a2acf8..000000000 --- a/packages/okx-wallet/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "okx-wallet", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/okx-wallet", -}; diff --git a/packages/okx-wallet/package.json b/packages/okx-wallet/package.json deleted file mode 100644 index 78f7f5ca7..000000000 --- a/packages/okx-wallet/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/okx-wallet", - "version": "8.9.13", - "description": "OKX Wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "okx wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/okx-wallet" -} diff --git a/packages/okx-wallet/project.json b/packages/okx-wallet/project.json deleted file mode 100644 index 114c948e5..000000000 --- a/packages/okx-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "okx-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/okx-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/okx-wallet", - "tsConfig": "packages/okx-wallet/tsconfig.lib.json", - "project": "packages/okx-wallet/package.json", - "entryFile": "packages/okx-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/okx-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/okx-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/okx-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/okx-wallet"], - "options": { - "jestConfig": "packages/okx-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/okx-wallet/src/index.ts b/packages/okx-wallet/src/index.ts deleted file mode 100644 index 73172ebdb..000000000 --- a/packages/okx-wallet/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupOKXWallet } from "./lib/okx-wallet"; -export type { OKXWalletParams } from "./lib/okx-wallet"; diff --git a/packages/okx-wallet/src/lib/icon.ts b/packages/okx-wallet/src/lib/icon.ts deleted file mode 100644 index 5ba8925f5..000000000 --- a/packages/okx-wallet/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/okx-wallet/src/lib/injected-okx-wallet.ts b/packages/okx-wallet/src/lib/injected-okx-wallet.ts deleted file mode 100644 index aa967c5f3..000000000 --- a/packages/okx-wallet/src/lib/injected-okx-wallet.ts +++ /dev/null @@ -1,73 +0,0 @@ -export interface AccessKey { - publicKey: string; - secretKey: string; -} - -interface RequestSignInResponse { - accessKey: AccessKey; - accountId: string; - error: string | { type: string }; -} - -export type SignOutResponse = true | { error: string | { type: string } }; - -interface RequestSignInParams { - contractId?: string; - methodNames?: Array; -} - -interface Action { - methodName: string; - args: object; - gas: string; - deposit: string; -} - -interface SignAndSendTransactionParams { - receiverId: string; - actions: Array; -} - -export interface SignAndSendTransactionResponse { - method: string; - txHash: string; - code: number; -} - -interface Transaction { - receiverId: string; - actions: Array; -} - -interface RequestSignTransactionsParams { - transactions: Array; -} - -interface RequestSignTransactionsResponse { - txs: Array<{ - signedTx: string; - }>; -} - -export interface OkxEvents { - signIn: () => void; - signOut: () => void; - accountChanged: (changedAccountId: string) => void; -} - -export interface InjectedOkx { - getAccountId: () => string | null; - requestSignIn: ( - params: RequestSignInParams - ) => Promise; - signOut: () => Promise; - isSignedIn: () => boolean; - on: ( - event: Event, - callback: OkxEvents[Event] - ) => void; - signTransaction: (params: SignAndSendTransactionParams) => Promise; - requestSignTransactions: ( - params: RequestSignTransactionsParams - ) => Promise; -} diff --git a/packages/okx-wallet/src/lib/okx-wallet.spec.ts b/packages/okx-wallet/src/lib/okx-wallet.spec.ts deleted file mode 100644 index 56b45c01b..000000000 --- a/packages/okx-wallet/src/lib/okx-wallet.spec.ts +++ /dev/null @@ -1,133 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries */ -import { mock } from "jest-mock-extended"; -import type { ProviderService } from "packages/core/src/lib/services"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; - -import { setupOKXWallet } from "./okx-wallet"; -import { mockWallet } from "../../../core/src/lib/testUtils"; -import type { AccessKey, SignOutResponse } from "./injected-okx-wallet"; -import type { InjectedWallet } from "../../../core/src/lib/wallet"; - -const accountId = "test-account.testnet"; -const transactions = [ - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, -]; - -jest.mock("near-api-js/lib/transaction", () => { - return { - ...jest.requireActual("near-api-js/lib/transaction"), - SignedTransaction: { - ...jest.requireActual("near-api-js/lib/transaction").SignedTransaction, - decode: jest.fn().mockReturnValue({}), - }, - }; -}); - -const mockOkx = () => { - const okxwallet = { - near: { - getAccountId: jest.fn().mockReturnValue(""), - requestSignIn: jest.fn(async () => { - window.okxwallet.near!.getAccountId = jest - .fn() - .mockReturnValue(accountId); - - return { - accountId, - accessKey: mock(), - error: "", - }; - }), - signOut: jest.fn().mockReturnValue(mock()), - isSignedIn: jest.fn().mockReturnValue(true), - on: jest.fn(), - signTransaction: jest.fn().mockResolvedValue("signedTx"), - requestSignTransactions: jest.fn().mockResolvedValue({ - txs: [{ signedTx: "signedTx" }], - }), - }, - }; - - window.okxwallet = okxwallet; - - return window.okxwallet.near; -}; - -const createOKXWallet = async () => { - const injectedOkx = mockOkx(); - const provider = mock(); - provider.sendTransaction.mockResolvedValue(mock()); - const { wallet } = await mockWallet(setupOKXWallet(), { - provider, - }); - - return { - wallet, - injectedOkx, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("signIn", () => { - it("sign into okx wallet", async () => { - const { wallet, injectedOkx } = await createOKXWallet(); - const accounts = await wallet.signIn({ contractId: "test.testnet" }); - expect(injectedOkx!.requestSignIn).toHaveBeenCalled(); - expect(accounts[0]?.accountId).toBe(accountId); - }); -}); - -describe("signOut", () => { - it("sign out of okx wallet", async () => { - const { wallet, injectedOkx } = await createOKXWallet(); - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signOut(); - - expect(injectedOkx!.signOut).toHaveBeenCalled(); - }); -}); - -describe("getAccounts", () => { - it("returns accounts", async () => { - const { wallet, injectedOkx } = await createOKXWallet(); - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.getAccounts(); - - expect(injectedOkx!.getAccountId).toHaveBeenCalled(); - expect(result).toEqual([{ accountId, publicKey: undefined }]); - }); -}); - -describe("signTransaction", () => { - it("sign transaction in okx wallet", async () => { - const { wallet, injectedOkx } = await createOKXWallet(); - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signAndSendTransaction({ - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }); - - expect(injectedOkx!.signTransaction).toHaveBeenCalled(); - }); -}); - -describe("signAndSendTransactions", () => { - it("sign transactions in okx wallet", async () => { - const { wallet, injectedOkx } = await createOKXWallet(); - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.signAndSendTransactions({ - transactions, - }); - - expect(injectedOkx!.requestSignTransactions).toHaveBeenCalled(); - expect(result.length).toEqual(transactions.length); - }); -}); diff --git a/packages/okx-wallet/src/lib/okx-wallet.ts b/packages/okx-wallet/src/lib/okx-wallet.ts deleted file mode 100644 index 05b4b5768..000000000 --- a/packages/okx-wallet/src/lib/okx-wallet.ts +++ /dev/null @@ -1,247 +0,0 @@ -import { isMobile } from "is-mobile"; -import { SignedTransaction } from "near-api-js/lib/transaction"; -import { isCurrentBrowserSupported, waitFor } from "@near-wallet-selector/core"; - -import type { - Action, - Optional, - Transaction, - InjectedWallet, - FunctionCallAction, - WalletModuleFactory, - WalletBehaviourFactory, -} from "@near-wallet-selector/core"; - -import icon from "./icon"; -import type { InjectedOkx } from "./injected-okx-wallet"; - -let downloadUrl = - "https://chromewebstore.google.com/detail/%E6%AC%A7%E6%98%93-web3-%E9%92%B1%E5%8C%85/mcohilncbfahbmgdjkbpemcciiolgcge"; - -if (isCurrentBrowserSupported(["safari"])) { - downloadUrl = "https://apps.apple.com/us/app/okx-wallet/id6463797825"; -} - -if (isCurrentBrowserSupported(["edge-chromium"])) { - downloadUrl = - "https://microsoftedge.microsoft.com/addons/detail/%E6%AC%A7%E6%98%93-web3-%E9%92%B1%E5%8C%85/pbpjkcldjiffchgbbndmhojiacbgflha"; -} - -declare global { - interface Window { - okxwallet: { - near: InjectedOkx | undefined; - }; - } -} - -export interface OKXWalletParams { - iconUrl?: string; - deprecated?: boolean; -} - -interface OkxState { - wallet: InjectedOkx; -} - -const isInstalled = () => { - return waitFor(() => !!window.okxwallet?.near).catch(() => false); -}; - -const setupOkxState = (): OkxState => { - const wallet = window.okxwallet?.near!; - return { - wallet, - }; -}; - -const OKXWallet: WalletBehaviourFactory = async ({ - metadata, - store, - emitter, - logger, - id, - provider, -}) => { - const _state = setupOkxState(); - - const signOut = async () => { - if (!_state.wallet.isSignedIn()) { - return; - } - - await _state.wallet.signOut(); - }; - - const setupEvents = () => { - _state.wallet.on("accountChanged", async (newAccountId) => { - logger.log("onAccountChange", newAccountId); - emitter.emit("signedOut", null); - }); - }; - - const isValidActions = ( - actions: Array - ): actions is Array => { - return actions.every((x) => x.type === "FunctionCall"); - }; - - const transformActions = (actions: Array) => { - const validActions = isValidActions(actions); - - if (!validActions) { - throw new Error( - `Only 'FunctionCall' actions types are supported by ${metadata.name}` - ); - } - - return actions.map((x) => x.params); - }; - - const transformTransactions = ( - transactions: Array> - ) => { - return transactions.map((transaction) => { - return { - receiverId: transaction.receiverId, - actions: transformActions(transaction.actions), - }; - }); - }; - - if (_state.wallet && _state.wallet.isSignedIn()) { - setupEvents(); - } - - const getAccounts = async () => { - const { selectedWalletId } = store.getState(); - if (selectedWalletId === id) { - await waitFor(() => !!_state.wallet?.isSignedIn(), { - timeout: 1000, - }).catch(); - } - - const accountId = _state.wallet.getAccountId(); - - if (!accountId) { - return []; - } - - return [{ accountId }]; - }; - - const getSignedTransaction = (signedTx: string) => { - const buf = Buffer.from(signedTx, "base64"); - const signedTransaction = SignedTransaction.decode(buf); - return signedTransaction; - }; - - return { - async signIn({ contractId, methodNames }) { - try { - const { accessKey, accountId } = await _state.wallet.requestSignIn({ - contractId, - methodNames, - }); - setupEvents(); - - const publicKey = accessKey?.publicKey; - - return [ - { - accountId, - publicKey: publicKey ? publicKey.toString() : undefined, - }, - ]; - } catch (_) { - await signOut(); - throw new Error("Failed to sign in"); - } - }, - - signOut, - - getAccounts, - - async verifyOwner() { - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signMessage() { - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - - const { contract } = store.getState(); - - if (!_state.wallet.isSignedIn() || !contract) { - throw new Error("Wallet not signed in"); - } - - try { - const signedTx = await _state.wallet.signTransaction({ - receiverId: receiverId || contract.contractId, - actions: transformActions(actions), - }); - const signedTransaction = getSignedTransaction(signedTx); - return provider.sendTransaction(signedTransaction); - } catch (error) { - throw new Error("sign Error"); - } - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - if (!_state.wallet.isSignedIn()) { - throw new Error("Wallet not signed in"); - } - - try { - const resp = await _state.wallet.requestSignTransactions({ - transactions: transformTransactions(transactions), - }); - - const { txs } = resp; - const results = []; - for (let i = 0; i < txs.length; i++) { - const signedTransaction = getSignedTransaction(txs[i].signedTx); - results.push(await provider.sendTransaction(signedTransaction)); - } - return results; - } catch (error) { - throw new Error("sign Error"); - } - }, - }; -}; - -export function setupOKXWallet({ - iconUrl = icon, - deprecated = false, -}: OKXWalletParams = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - - const installed = await isInstalled(); - - return { - id: "okx-wallet", - type: "injected", - metadata: { - name: "OKX Wallet", - description: "Browser extension wallet", - iconUrl, - downloadUrl, - deprecated, - available: installed, - }, - init: OKXWallet, - }; - }; -} diff --git a/packages/okx-wallet/tsconfig.json b/packages/okx-wallet/tsconfig.json deleted file mode 100644 index 3aaed7519..000000000 --- a/packages/okx-wallet/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/okx-wallet/tsconfig.lib.json b/packages/okx-wallet/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/okx-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/okx-wallet/tsconfig.spec.json b/packages/okx-wallet/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/okx-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/ramper-wallet/.babelrc b/packages/ramper-wallet/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/ramper-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/ramper-wallet/.eslintrc.json b/packages/ramper-wallet/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/ramper-wallet/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/ramper-wallet/README.md b/packages/ramper-wallet/README.md deleted file mode 100644 index b78dc069b..000000000 --- a/packages/ramper-wallet/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# @near-wallet-selector/ramper-wallet - - -This is the [Ramper Wallet](https://docs.ramper.xyz/) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` - -```bash -# Using Yarn -yarn add @near-wallet-selector/ramper-wallet - -# Using NPM. -npm install @near-wallet-selector/ramper-wallet -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupRamperWallet } from "@near-wallet-selector/ramper-wallet"; - -// Ramper for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const ramper = setupRamperWallet({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [ramper], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/ramper-wallet.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupRamperWallet } from "@near-wallet-selector/ramper-wallet"; -import ramperWalletIconUrl from "@near-wallet-selector/ramper-wallet/assets/ramper-wallet.png"; - -const ramper = setupRamperWallet({ - iconUrl: ramperWalletIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/ramper-wallet/assets/ramper-wallet.png b/packages/ramper-wallet/assets/ramper-wallet.png deleted file mode 100644 index cc132253d..000000000 Binary files a/packages/ramper-wallet/assets/ramper-wallet.png and /dev/null differ diff --git a/packages/ramper-wallet/jest.config.js b/packages/ramper-wallet/jest.config.js deleted file mode 100644 index 91335e28b..000000000 --- a/packages/ramper-wallet/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "ramper-wallet", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/ramper-wallet", -}; diff --git a/packages/ramper-wallet/jest.config.ts b/packages/ramper-wallet/jest.config.ts deleted file mode 100644 index a27bc5cea..000000000 --- a/packages/ramper-wallet/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "ramper-wallet", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/ramper-wallet", -}; diff --git a/packages/ramper-wallet/package.json b/packages/ramper-wallet/package.json deleted file mode 100644 index 61f51927b..000000000 --- a/packages/ramper-wallet/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/ramper-wallet", - "version": "8.9.13", - "description": "Ramper wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "ramper wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/ramper-wallet" -} diff --git a/packages/ramper-wallet/project.json b/packages/ramper-wallet/project.json deleted file mode 100644 index 389c55a10..000000000 --- a/packages/ramper-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "ramper-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/ramper-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/ramper-wallet", - "tsConfig": "packages/ramper-wallet/tsconfig.lib.json", - "project": "packages/ramper-wallet/package.json", - "entryFile": "packages/ramper-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/ramper-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/ramper-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/ramper-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/ramper-wallet"], - "options": { - "jestConfig": "packages/ramper-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/ramper-wallet/src/index.ts b/packages/ramper-wallet/src/index.ts deleted file mode 100644 index b2955b45a..000000000 --- a/packages/ramper-wallet/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupRamperWallet } from "./lib/ramper-wallet"; -export type { RamperWalletParams } from "./lib/ramper-wallet"; diff --git a/packages/ramper-wallet/src/lib/icon.ts b/packages/ramper-wallet/src/lib/icon.ts deleted file mode 100644 index 880e2a953..000000000 --- a/packages/ramper-wallet/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/ramper-wallet/src/lib/ramper-wallet.ts b/packages/ramper-wallet/src/lib/ramper-wallet.ts deleted file mode 100644 index 655e3f45b..000000000 --- a/packages/ramper-wallet/src/lib/ramper-wallet.ts +++ /dev/null @@ -1,215 +0,0 @@ -import type { - InjectedWallet, - WalletBehaviourFactory, - WalletModuleFactory, - Transaction, - Account, - Optional, -} from "@near-wallet-selector/core"; - -import { createAction } from "@near-wallet-selector/wallet-utils"; - -import { isMobile } from "is-mobile"; -import type { InjectedRamperWallet } from "./ramper-wallet.types"; -import icon from "./icon"; -import { - init, - AUTH_PROVIDER, - THEME, - signIn, - sendTransaction, -} from "@ramper/near"; -import type { Action } from "near-api-js/lib/transaction"; - -interface RamperWalletState { - wallet: InjectedRamperWallet; -} - -const setupRamperWalletState = (): RamperWalletState => { - const wallet = window.ramper as InjectedRamperWallet; - return { - wallet, - }; -}; - -const RamperWallet: WalletBehaviourFactory = async ({ - metadata, - store, - options, - logger, -}) => { - await init({ - appName: "Ramper Wallet", - authProviders: [ - AUTH_PROVIDER.GOOGLE, - AUTH_PROVIDER.FACEBOOK, - AUTH_PROVIDER.TWITTER, - AUTH_PROVIDER.APPLE, - AUTH_PROVIDER.EMAIL, - ], - walletProviders: [], - network: options.network.networkId, - theme: THEME.DARK, - }); - - const _state = setupRamperWalletState(); - - const getAccounts = async (): Promise> => { - const { wallets } = _state.wallet.getUser(); - const { publicKey: accountId } = wallets["near"]; - - if (!accountId) { - return []; - } - - return [ - { - accountId, - }, - ]; - }; - - const transformTransactions = async ( - transactions: Array> - ) => { - const accounts = await getAccounts(); - const { contract } = store.getState(); - - if (!accounts.length || !contract) { - throw new Error("Wallet not signed in"); - } - - return transactions.map((transaction) => { - const parsedActions = transaction.actions.map((action) => - createAction(action) - ); - - return { - receiverId: transaction.receiverId || contract.contractId, - actions: parsedActions, - }; - }); - }; - - return { - async signIn() { - const signInResult = await signIn(); - if (signInResult.method === "cancel" || signInResult.method === "none") { - throw new Error("Something went wrong"); - } - - // signIn first because if getUser break function - const existingAccounts = await getAccounts(); - - if (existingAccounts.length) { - return existingAccounts; - } - return getAccounts(); - }, - - async signOut() { - _state.wallet.signOut(); - }, - - async getAccounts() { - return getAccounts(); - }, - - async verifyOwner({ message }) { - logger.log("Ramper Wallet:verifyOwner", { message }); - - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signAndSendTransaction({ - receiverId, - actions, - }: Omit) { - logger.log("signAndSendTransaction", { receiverId, actions }); - - const { contract } = store.getState(); - const accounts = await getAccounts(); - - if (!accounts.length || !contract) { - throw new Error("Wallet not signed in"); - } - - const transactions: Array<{ - receiverId: string; - actions: Array; - }> = await transformTransactions([{ receiverId, actions }]); - - try { - const { result } = await sendTransaction({ - transactionActions: transactions, - }); - if ( - Object.keys(result[0]).length === 0 && - result[0].constructor === Object - ) { - throw new Error(); - } else { - return result[0]; - } - } catch (e) { - throw new Error("Failed to send transaction"); - } - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - const transactionsParsed: Array<{ - receiverId: string; - actions: Array; - }> = await transformTransactions(transactions); - - try { - const { result: results } = await sendTransaction({ - transactionActions: transactionsParsed, - }); - if ( - Object.keys(results[0]).length === 0 && - results[0].constructor === Object - ) { - throw new Error(); - } else { - return results; - } - } catch (e) { - throw new Error("Failed to send transactions"); - } - }, - }; -}; - -export interface RamperWalletParams { - iconUrl?: string; - deprecated?: boolean; -} - -export function setupRamperWallet({ - iconUrl = icon, - deprecated = false, -}: RamperWalletParams = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - - return { - id: "ramper-wallet", - type: "injected", - metadata: { - name: "Ramper Wallet", - description: null, - iconUrl, - downloadUrl: "https://docs.ramper.xyz/", - deprecated, - available: true, - }, - init: RamperWallet, - }; - }; -} diff --git a/packages/ramper-wallet/src/lib/ramper-wallet.types.ts b/packages/ramper-wallet/src/lib/ramper-wallet.types.ts deleted file mode 100644 index 451444414..000000000 --- a/packages/ramper-wallet/src/lib/ramper-wallet.types.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { Transaction } from "@near-wallet-selector/core"; -import type { - NearNetwork, - RamperInstance, - SignInResult, - SignInWithProvider, - TransactionResultType, - User, -} from "@ramper/near"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; - -type TransactionResult = { - type: TransactionResultType; - result?: string | Error; -}; - -type SendTransactionResult = Omit & { - type: TransactionResultType; - txHashes: Array; - result?: Array | Error; -}; - -type SendTransactionParams = { - transactionActions: Array; - network?: NearNetwork; -}; - -export interface InjectedRamperWallet extends RamperInstance { - signIn: (clientAPIKey?: string) => Promise; - signInWithProvider: SignInWithProvider; - signOut: () => void; - getUser: () => User; - openWallet: () => void; - sendTransaction: ( - params: SendTransactionParams - ) => Promise; -} diff --git a/packages/ramper-wallet/tsconfig.json b/packages/ramper-wallet/tsconfig.json deleted file mode 100644 index 8b6d6acaf..000000000 --- a/packages/ramper-wallet/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/ramper-wallet/tsconfig.lib.json b/packages/ramper-wallet/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/ramper-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/ramper-wallet/tsconfig.spec.json b/packages/ramper-wallet/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/ramper-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/sender/.babelrc b/packages/sender/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/sender/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/sender/.eslintrc.json b/packages/sender/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/sender/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/sender/README.md b/packages/sender/README.md deleted file mode 100644 index 9fd316cdc..000000000 --- a/packages/sender/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# @near-wallet-selector/sender - -This is the [Sender](https://chrome.google.com/webstore/detail/sender-wallet/epapihdplajcdnnkdeiahlgigofloibg) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` -```bash -# Using Yarn -yarn add @near-wallet-selector/sender - -# Using NPM. -npm install @near-wallet-selector/sender -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupSender } from "@near-wallet-selector/sender"; - -// Sender for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const sender = setupSender({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [sender], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/sender-icon.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupSender } from "@near-wallet-selector/sender"; -import senderIconUrl from "@near-wallet-selector/sender/assets/sender-icon.png"; - -const sender = setupSender({ - iconUrl: senderIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/sender/assets/sender-icon.png b/packages/sender/assets/sender-icon.png deleted file mode 100644 index 04cbb9106..000000000 Binary files a/packages/sender/assets/sender-icon.png and /dev/null differ diff --git a/packages/sender/jest.config.js b/packages/sender/jest.config.js deleted file mode 100644 index d76f58bf1..000000000 --- a/packages/sender/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "sender", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/sender", -}; diff --git a/packages/sender/jest.config.ts b/packages/sender/jest.config.ts deleted file mode 100644 index 066ac6ad3..000000000 --- a/packages/sender/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "sender", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/sender", -}; diff --git a/packages/sender/package.json b/packages/sender/package.json deleted file mode 100644 index 995ec220b..000000000 --- a/packages/sender/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/sender", - "version": "8.9.13", - "description": "Sender wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "sender wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/sender" -} diff --git a/packages/sender/project.json b/packages/sender/project.json deleted file mode 100644 index 51e2b729c..000000000 --- a/packages/sender/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "sender", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/sender/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/sender", - "tsConfig": "packages/sender/tsconfig.lib.json", - "project": "packages/sender/package.json", - "entryFile": "packages/sender/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/sender/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/sender/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/sender/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/sender"], - "options": { - "jestConfig": "packages/sender/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/sender/src/index.ts b/packages/sender/src/index.ts deleted file mode 100644 index 3b2ab2a2d..000000000 --- a/packages/sender/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupSender } from "./lib/sender"; -export type { SenderParams } from "./lib/sender"; diff --git a/packages/sender/src/lib/icon.ts b/packages/sender/src/lib/icon.ts deleted file mode 100644 index 99f496abf..000000000 --- a/packages/sender/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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`; diff --git a/packages/sender/src/lib/injected-sender.ts b/packages/sender/src/lib/injected-sender.ts deleted file mode 100644 index 923540051..000000000 --- a/packages/sender/src/lib/injected-sender.ts +++ /dev/null @@ -1,167 +0,0 @@ -// Interfaces based on "documentation": https://github.com/SenderWallet/sender-wallet-integration-tutorial - -// Empty string if we haven't signed in before. -import type { Account, providers } from "near-api-js"; -import type { - AccountImportData, - SignedMessage, - SignMessageParams, -} from "@near-wallet-selector/core"; - -export interface AccessKey { - publicKey: { - data: Uint8Array; - keyType: number; - }; - secretKey: string; -} - -interface RequestSignInResponse { - accessKey: AccessKey; - error: string | { type: string }; - notificationId: number; - type: "sender-wallet-result"; -} - -export type SignOutResponse = true | { error: string | { type: string } }; - -interface RpcInfo { - explorerUrl: string; - helperUrl: string; - index: number; - name: string; - network: string; - networkId: string; - nodeUrl: string; - walletUrl: string; - wrapNearContract: string; -} - -interface GetRpcResponse { - method: "getRpc"; - notificationId: number; - rpc: RpcInfo; - type: "sender-wallet-result"; -} - -interface RequestSignInParams { - contractId: string; - methodNames?: Array; - amount?: string; // in yoctoⓃ -} - -interface RpcChangedResponse { - explorerUrl: string; - helperUrl: string; - index: number; - name: string; - network: string; - networkId: string; - nodeUrl: string; - walletUrl: string; - wrapNearContract: string; -} - -interface SendMoneyParams { - receiverId: string; - amount: string; -} - -interface Action { - methodName: string; - args: object; - gas: string; - deposit: string; -} - -interface SignAndSendTransactionParams { - receiverId: string; - actions: Array; -} - -export interface FunctionCallError { - error: { - index: number; - kind: object; - message: string; - transaction_outcome: object; - type: "FunctionCallError"; - }; -} - -// Seems to reuse signAndSendTransactions internally, hence the wrong method name and list of responses. -export interface SignAndSendTransactionResponse { - actionType: "DAPP/DAPP_POPUP_RESPONSE"; - method: "signAndSendTransactions"; - notificationId: number; - error?: string; - response?: Array | FunctionCallError; - type: "sender-wallet-extensionResult"; -} - -interface SignAndSendTransactionsResponse { - actionType: "DAPP/DAPP_POPUP_RESPONSE"; - method: "signAndSendTransactions"; - notificationId: number; - error?: string; - response?: Array | FunctionCallError; - type: "sender-wallet-extensionResult"; -} - -interface SignMessageResponse { - actionType: "DAPP/POPUP_RESPONSE"; - method: "signMessage"; - notificationId: number; - error?: string; - response?: SignedMessage; - type: "sender-wallet-extensionResult"; -} - -interface Transaction { - receiverId: string; - actions: Array; -} - -interface RequestSignTransactionsParams { - transactions: Array; -} - -export interface SenderEvents { - signIn: () => void; - signOut: () => void; - accountChanged: (changedAccountId: string) => void; - rpcChanged: (response: RpcChangedResponse) => void; -} - -export interface batchImportParams { - keystore: Array; - network: string; -} - -export interface InjectedSender { - isSender: boolean; - callbacks: Record; - getAccountId: () => string | null; - getRpc: () => Promise; - account(): Account | null; - requestSignIn: ( - params: RequestSignInParams - ) => Promise; - signOut: () => Promise; - isSignedIn: () => boolean; - remove: (event: string) => void; - on: ( - event: Event, - callback: SenderEvents[Event] - ) => void; - // TODO: Determine return type. - sendMoney: (params: SendMoneyParams) => Promise; - signAndSendTransaction: ( - params: SignAndSendTransactionParams - ) => Promise; - requestSignTransactions: ( - params: RequestSignTransactionsParams - ) => Promise; - batchImport: (params: batchImportParams) => Promise; - signMessage: (params: SignMessageParams) => Promise; -} diff --git a/packages/sender/src/lib/sender.spec.ts b/packages/sender/src/lib/sender.spec.ts deleted file mode 100644 index 93ac687e2..000000000 --- a/packages/sender/src/lib/sender.spec.ts +++ /dev/null @@ -1,201 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries */ -import { mock } from "jest-mock-extended"; -import { mockWallet } from "../../../core/src/lib/testUtils"; - -import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; -import type { InjectedWallet } from "../../../core/src/lib/wallet"; -import type { - AccessKey, - SenderEvents, - SignOutResponse, -} from "./injected-sender"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; -import { setupSender } from "./sender"; - -const accountId = "test-account.testnet"; -const transactions = [ - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, -]; - -const mockSenderOnWindow = () => { - window.near = { - isSender: true, - callbacks: mock(), - getAccountId: jest.fn().mockReturnValue(""), - getRpc: jest.fn(), - account: jest.fn().mockReturnValue({ - connection: { - signer: { - getPublicKey: jest.fn().mockReturnValue(""), - }, - }, - }), - requestSignIn: jest.fn(async () => { - window.near!.getAccountId = jest.fn().mockReturnValue(accountId); - return { - accessKey: mock(), - error: "", - notificationId: 0, - type: "sender-wallet-result" as const, - }; - }), - signOut: jest.fn().mockReturnValue(mock()), - isSignedIn: jest.fn().mockReturnValue(true), - remove: jest.fn(), - on: jest.fn(), - sendMoney: jest.fn(), - signAndSendTransaction: jest.fn().mockReturnValue( - Promise.resolve({ - error: undefined, - response: mock(), - }) - ), - requestSignTransactions: jest.fn().mockReturnValue( - Promise.resolve({ - error: undefined, - response: mock>( - new Array(transactions.length).fill({}) - ), - }) - ), - signMessage: jest.fn().mockResolvedValue({ - error: undefined, - response: { - accountId, - publicKey: "ed25519:test", - signature: "testSignature", - }, - }), - batchImport: jest.fn(), - }; - - return window.near; -}; - -const createSenderWallet = async (deps: MockWalletDependencies = {}) => { - const injectedSender = mockSenderOnWindow(); - const { wallet } = await mockWallet(setupSender(), deps); - - return { - wallet, - injectedSender, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("signIn", () => { - it("sign into sender wallet", async () => { - const { wallet, injectedSender } = await createSenderWallet(); - - const accounts = await wallet.signIn({ contractId: "test.testnet" }); - - expect(injectedSender.requestSignIn).toHaveBeenCalled(); - expect(accounts).toEqual([{ accountId, publicKey: undefined }]); - }); -}); - -describe("signOut", () => { - it("sign out of sender wallet", async () => { - const { wallet, injectedSender } = await createSenderWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signOut(); - - expect(injectedSender.signOut).toHaveBeenCalled(); - }); -}); - -describe("getAccounts", () => { - it("returns array of accounts", async () => { - const { wallet, injectedSender } = await createSenderWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.getAccounts(); - - expect(injectedSender.getAccountId).toHaveBeenCalled(); - expect(result).toEqual([{ accountId, publicKey: undefined }]); - }); -}); - -describe("signAndSendTransaction", () => { - it("sign transaction in sender", async () => { - const { wallet, injectedSender } = await createSenderWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signAndSendTransaction({ - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }); - - expect(injectedSender.signAndSendTransaction).toHaveBeenCalled(); - }); -}); - -describe("signAndSendTransactions", () => { - it("sign transactions in sender", async () => { - const { wallet, injectedSender } = await createSenderWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.signAndSendTransactions({ - transactions, - }); - - expect(injectedSender.requestSignTransactions).toHaveBeenCalled(); - expect(result.length).toEqual(transactions.length); - }); -}); - -describe("importAccountsInSecureContext", () => { - it("returns import url", async () => { - const { wallet } = await createSenderWallet(); - - expect(typeof wallet.importAccountsInSecureContext).toBe("function"); - - const accountsData = [ - { accountId: "test.testnet", privateKey: "ed25519:test" }, - ]; - - if (wallet.importAccountsInSecureContext) { - await wallet.importAccountsInSecureContext({ accounts: accountsData }); - // @ts-ignore - expect(window.near.batchImport).toHaveBeenCalledWith({ - keystore: accountsData, - network: "testnet", - }); - } - }); -}); - -describe("signMessage", () => { - it("sign message", async () => { - const { wallet, injectedSender } = await createSenderWallet(); - - const message = { - message: "test message", - nonce: Buffer.from("30990309-30990309-390A303-292090"), - recipient: "test.app", - }; - - const result = await wallet.signMessage!(message); - - expect(injectedSender?.signMessage).toHaveBeenCalled(); - expect(result).toEqual({ - accountId, - publicKey: "ed25519:test", - signature: "testSignature", - }); - }); -}); diff --git a/packages/sender/src/lib/sender.ts b/packages/sender/src/lib/sender.ts deleted file mode 100644 index fc4c3fbe5..000000000 --- a/packages/sender/src/lib/sender.ts +++ /dev/null @@ -1,365 +0,0 @@ -import { isMobile } from "is-mobile"; -import type { - WalletModuleFactory, - WalletBehaviourFactory, - InjectedWallet, - Action, - Transaction, - FunctionCallAction, - Optional, - Account, -} from "@near-wallet-selector/core"; -import { waitFor } from "@near-wallet-selector/core"; -import type { InjectedSender } from "./injected-sender"; -import icon from "./icon"; - -declare global { - interface Window { - near: InjectedSender | undefined; - } -} - -export interface SenderParams { - iconUrl?: string; - deprecated?: boolean; -} - -interface SenderState { - wallet: InjectedSender; -} - -const isInstalled = () => { - return waitFor(() => !!window.near?.isSender).catch(() => false); -}; - -const setupSenderState = (): SenderState => { - const wallet = window.near!; - - return { - wallet, - }; -}; - -const Sender: WalletBehaviourFactory = async ({ - options, - metadata, - store, - provider, - emitter, - logger, - id, -}) => { - const _state = setupSenderState(); - - const cleanup = () => { - for (const key in _state.wallet.callbacks) { - _state.wallet.remove(key); - } - }; - - const signOut = async () => { - if (!_state.wallet.isSignedIn()) { - return; - } - - cleanup(); - - const res = await _state.wallet.signOut(); - - if (res === true) { - return; - } - - const error = new Error( - typeof res.error === "string" ? res.error : res.error.type - ); - - // Prevent signing out by throwing. - if (error.message === "User reject") { - throw error; - } - - // Continue signing out but log the issue. - logger.log("Failed to sign out"); - logger.error(error); - }; - - const setupEvents = () => { - _state.wallet.on("accountChanged", async (newAccountId) => { - logger.log("onAccountChange", newAccountId); - emitter.emit("signedOut", null); - }); - - _state.wallet.on("rpcChanged", async (rpc) => { - logger.log("onNetworkChange", rpc); - - if (options.network.networkId !== rpc.networkId) { - await signOut(); - - emitter.emit("signedOut", null); - emitter.emit("networkChanged", { networkId: rpc.networkId }); - } - }); - }; - - const getAccounts = async (): Promise> => { - // Add extra wait to ensure Sender's sign in status is read from the - // browser extension background env. - // Check for isSignedIn() in only if selectedWalletId is set. - const { selectedWalletId } = store.getState(); - if (selectedWalletId === id) { - await waitFor(() => !!_state.wallet?.isSignedIn(), { - timeout: 1000, - }).catch(); - } - - const accountId = _state.wallet.getAccountId(); - - if (!accountId) { - return []; - } - - await waitFor(() => !!_state.wallet.account(), { timeout: 100 }); - - const account = _state.wallet.account(); - - // When wallet is locked signer is empty an object {}. - if (!account!.connection.signer.getPublicKey) { - return [{ accountId, publicKey: undefined }]; - } - - const publicKey = await account!.connection.signer.getPublicKey( - account!.accountId, - options.network.networkId - ); - - return [ - { - accountId, - publicKey: publicKey ? publicKey.toString() : undefined, - }, - ]; - }; - - const isValidActions = ( - actions: Array - ): actions is Array => { - return actions.every((x) => x.type === "FunctionCall"); - }; - - const transformActions = (actions: Array) => { - const validActions = isValidActions(actions); - - if (!validActions) { - throw new Error( - `Only 'FunctionCall' actions types are supported by ${metadata.name}` - ); - } - - return actions.map((x) => x.params); - }; - - const transformTransactions = ( - transactions: Array> - ) => { - return transactions.map((transaction) => { - return { - receiverId: transaction.receiverId, - actions: transformActions(transaction.actions), - }; - }); - }; - - if (_state.wallet && _state.wallet.isSignedIn()) { - setupEvents(); - } - - return { - async signIn({ contractId, methodNames }) { - const existingAccounts = await getAccounts(); - - if (existingAccounts.length) { - return existingAccounts; - } - - const { accessKey, error } = await _state.wallet.requestSignIn({ - contractId, - methodNames, - }); - - if (!accessKey || error) { - await signOut(); - - throw new Error( - (typeof error === "string" ? error : error.type) || - "Failed to sign in" - ); - } - - setupEvents(); - - return await getAccounts(); - }, - - signOut, - - async getAccounts() { - return getAccounts(); - }, - - async verifyOwner({ message }) { - logger.log("Sender:verifyOwner", { message }); - - const account = _state.wallet.account(); - - if (!account) { - throw new Error("Wallet not signed in"); - } - - // Note: When the wallet is locked, Sender returns an empty Signer interface. - // Even after unlocking the wallet, the user will need to refresh to gain - // access to these methods. - if (!account.connection.signer.signMessage) { - throw new Error("Wallet is locked"); - } - - const networkId = options.network.networkId; - const accountId = account.accountId; - const pubKey = await account.connection.signer.getPublicKey( - accountId, - networkId - ); - const block = await provider.block({ finality: "final" }); - - const data = { - accountId, - message, - blockId: block.header.hash, - publicKey: Buffer.from(pubKey.data).toString("base64"), - keyType: pubKey.keyType, - }; - const encoded = JSON.stringify(data); - - const signed = await account.connection.signer.signMessage( - new Uint8Array(Buffer.from(encoded)), - accountId, - networkId - ); - - return { - ...data, - signature: Buffer.from(signed.signature).toString("base64"), - keyType: signed.publicKey.keyType, - }; - }, - - async signMessage(message) { - return _state.wallet.signMessage(message).then((res) => { - if (res.error) { - throw new Error(res.error); - } - - if (!res?.response) { - throw new Error("Invalid response"); - } - - return res.response; - }); - }, - - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - - const { contract } = store.getState(); - - if (!_state.wallet.isSignedIn() || !contract) { - throw new Error("Wallet not signed in"); - } - - return _state.wallet - .signAndSendTransaction({ - receiverId: receiverId || contract.contractId, - actions: transformActions(actions), - }) - .then((res) => { - if (res.error) { - throw new Error(res.error); - } else if (res.response && "error" in res.response) { - throw new Error(res.response.error.message); - } - - // Shouldn't happen but avoids inconsistent responses. - if (!res.response?.length) { - throw new Error("Invalid response"); - } - - return res.response[0]; - }); - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - if (!_state.wallet.isSignedIn()) { - throw new Error("Wallet not signed in"); - } - - return _state.wallet - .requestSignTransactions({ - transactions: transformTransactions(transactions), - }) - .then((res) => { - if (res.error) { - throw new Error(res.error); - } else if (res.response && "error" in res.response) { - throw new Error(res.response.error.message); - } - - // Shouldn't happen but avoids inconsistent responses. - if (!res.response?.length) { - throw new Error("Invalid response"); - } - - return res.response; - }); - }, - - async importAccountsInSecureContext({ accounts }) { - if (window.near && window.near.isSender) { - await window.near.batchImport({ - keystore: accounts, - network: options.network.networkId, - }); - } - }, - }; -}; - -export function setupSender({ - iconUrl = icon, - deprecated = false, -}: SenderParams = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - - const installed = await isInstalled(); - - return { - id: "sender", - type: "injected", - metadata: { - name: "Sender", - description: "Browser extension wallet built on NEAR.", - iconUrl, - downloadUrl: - "https://chrome.google.com/webstore/detail/sender-wallet/epapihdplajcdnnkdeiahlgigofloibg", - deprecated, - available: installed, - }, - init: Sender, - }; - }; -} diff --git a/packages/sender/tsconfig.json b/packages/sender/tsconfig.json deleted file mode 100644 index 3aaed7519..000000000 --- a/packages/sender/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/sender/tsconfig.lib.json b/packages/sender/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/sender/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/sender/tsconfig.spec.json b/packages/sender/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/sender/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/wallet-connect/dist/cjs/core/src/index.d.ts b/packages/wallet-connect/dist/cjs/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/index.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/index.js b/packages/wallet-connect/dist/cjs/core/src/index.js new file mode 100644 index 000000000..cfb828bf8 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = exports.allowOnlyLanguage = exports.translate = exports.serializeNep413 = exports.verifySignature = exports.verifyFullKeyBelongsToUser = exports.isCurrentBrowserSupported = exports.getActiveAccount = exports.waitFor = exports.EventEmitter = exports.setupWalletSelector = void 0; +var wallet_selector_js_1 = require("./lib/wallet-selector.js"); +Object.defineProperty(exports, "setupWalletSelector", { enumerable: true, get: function () { return wallet_selector_js_1.setupWalletSelector; } }); +var services_1 = require("./lib/services"); +Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return services_1.EventEmitter; } }); +var helpers_1 = require("./lib/helpers"); +Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return helpers_1.waitFor; } }); +Object.defineProperty(exports, "getActiveAccount", { enumerable: true, get: function () { return helpers_1.getActiveAccount; } }); +Object.defineProperty(exports, "isCurrentBrowserSupported", { enumerable: true, get: function () { return helpers_1.isCurrentBrowserSupported; } }); +Object.defineProperty(exports, "verifyFullKeyBelongsToUser", { enumerable: true, get: function () { return helpers_1.verifyFullKeyBelongsToUser; } }); +Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return helpers_1.verifySignature; } }); +Object.defineProperty(exports, "serializeNep413", { enumerable: true, get: function () { return helpers_1.serializeNep413; } }); +var translate_1 = require("./lib/translate/translate"); +Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } }); +Object.defineProperty(exports, "allowOnlyLanguage", { enumerable: true, get: function () { return translate_1.allowOnlyLanguage; } }); +var testUtils_1 = require("./lib/testUtils"); +Object.defineProperty(exports, "mockWallet", { enumerable: true, get: function () { return testUtils_1.mockWallet; } }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/constants.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/constants.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/constants.js b/packages/wallet-connect/dist/cjs/core/src/lib/constants.js new file mode 100644 index 000000000..50899a58d --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PENDING_SELECTED_WALLET_ID = exports.SELECTED_WALLET_ID = exports.PENDING_CONTRACT = exports.CONTRACT = exports.REMEMBER_RECENT_WALLETS_STATE = exports.REMEMBER_RECENT_WALLETS = exports.RECENTLY_SIGNED_IN_WALLETS = exports.PACKAGE_NAME = void 0; +exports.PACKAGE_NAME = "near-wallet-selector"; +exports.RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +exports.REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +exports.REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +exports.CONTRACT = "contract"; +exports.PENDING_CONTRACT = "contract:pending"; +exports.SELECTED_WALLET_ID = `selectedWalletId`; +exports.PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/detect-browser.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/detect-browser.js b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..a03402ab2 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,74 @@ +"use strict"; +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCurrentBrowserSupported = void 0; +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; +exports.isCurrentBrowserSupported = isCurrentBrowserSupported; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/getActiveAccount.js b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..0da744cc5 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActiveAccount = void 0; +const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; +exports.getActiveAccount = getActiveAccount; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/index.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/index.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/index.js b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/index.js new file mode 100644 index 000000000..eb80ab43a --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./waitFor"), exports); +__exportStar(require("./getActiveAccount"), exports); +__exportStar(require("./detect-browser"), exports); +__exportStar(require("./verify-signature/verify-signature"), exports); +__exportStar(require("./verify-signature/payload"), exports); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/payload.js b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..5655fd8cd --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeNep413 = exports.payloadSchema = exports.createPayload = void 0; +const borsh_1 = require("borsh"); +const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +exports.createPayload = createPayload; +exports.payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +const serializeNep413 = (signMessageParams) => { + const payload = (0, exports.createPayload)(signMessageParams); + return Buffer.from((0, borsh_1.serialize)(exports.payloadSchema, payload)); +}; +exports.serializeNep413 = serializeNep413; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..5d00297d2 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyFullKeyBelongsToUser = exports.verifySignature = void 0; +const borsh_1 = require("borsh"); +const js_sha256_1 = require("js-sha256"); +const payload_1 = require("./payload"); +const crypto_1 = require("../../../../../../../near-api-js/packages/crypto"); +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +const providers_1 = require("@near-js/providers"); +const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = (0, borsh_1.serialize)(payload_1.payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(js_sha256_1.sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = (0, crypto_1.publicKeyFrom)(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +exports.verifySignature = verifySignature; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new providers_1.JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; +exports.verifyFullKeyBelongsToUser = verifyFullKeyBelongsToUser; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/waitFor.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/helpers/waitFor.js b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..8d37d4cef --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/helpers/waitFor.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitFor = void 0; +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; +exports.waitFor = waitFor; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/ar.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/bg.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/en.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/es.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/hi.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/hr.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/ko.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/mk.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/sl.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/sr.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/vi.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/locale/zh.json b/packages/wallet-connect/dist/cjs/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/options.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/options.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/options.js b/packages/wallet-connect/dist/cjs/core/src/lib/options.js new file mode 100644 index 000000000..587fab7eb --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/options.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveOptions = exports.resolveNetwork = exports.getNetworkPreset = void 0; +const services_1 = require("./services"); +const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +exports.getNetworkPreset = getNetworkPreset; +const resolveNetwork = (network) => { + return typeof network === "string" ? (0, exports.getNetworkPreset)(network) : network; +}; +exports.resolveNetwork = resolveNetwork; +const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: (0, exports.resolveNetwork)(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new services_1.WebStorageService(), + }; +}; +exports.resolveOptions = resolveOptions; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/options.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/options.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/options.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/options.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/options.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..1129f4fc6 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventEmitter = void 0; +const events_1 = require("events"); +class EventEmitter { + emitter = new events_1.EventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} +exports.EventEmitter = EventEmitter; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/index.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/index.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/index.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/index.js new file mode 100644 index 000000000..771f7ca4c --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./provider/provider.service"), exports); +__exportStar(require("./provider/provider.service.types"), exports); +__exportStar(require("./storage/storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service"), exports); +__exportStar(require("./storage/web-storage.service"), exports); +__exportStar(require("./logger/logger.service"), exports); +__exportStar(require("./logger/logger.service.types"), exports); +__exportStar(require("./wallet-modules/wallet-modules.service"), exports); +__exportStar(require("./event-emitter/event-emitter.service"), exports); +__exportStar(require("./event-emitter/event-emitter.types"), exports); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..f2365f6b4 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = exports.Logger = void 0; +class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +exports.Logger = Logger; +exports.logger = new Logger(); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..7798a5f3f --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Provider = void 0; +const providers_1 = require("@near-js/providers"); +class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new providers_1.FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new providers_1.JsonRpcProvider({ url })) + : []; + } +} +exports.Provider = Provider; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..1d1ed0bf1 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonStorage = void 0; +const KEY_DELIMITER = ":"; +class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} +exports.JsonStorage = JsonStorage; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/storage.service.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/web-storage.service.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..b1b3430c7 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebStorageService = void 0; +class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} +exports.WebStorageService = WebStorageService; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..a27acfb1e --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,325 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletModules = void 0; +const event_emitter_service_1 = require("../event-emitter/event-emitter.service"); +const logger_service_1 = require("../logger/logger.service"); +const constants_1 = require("../../constants"); +const json_storage_service_1 = require("../storage/json-storage.service"); +class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger_service_1.logger.log(`Failed to validate ${wallet.id} during setup`); + logger_service_1.logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(constants_1.PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(constants_1.PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(constants_1.PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(constants_1.PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger_service_1.logger.log("Failed to sign out existing wallet"); + logger_service_1.logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(constants_1.RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger_service_1.logger.log(`Failed to sign out ${wallet.id}`); + logger_service_1.logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(constants_1.PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(constants_1.PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new event_emitter_service_1.EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new logger_service_1.Logger(module.id), + storage: new json_storage_service_1.JsonStorage(this.storage, [constants_1.PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger_service_1.logger.log("Failed to setup module"); + logger_service_1.logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger_service_1.logger.error("Failed to sign in to wallet. " + err); + } + } + } +} +exports.WalletModules = WalletModules; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/store.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/store.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/store.js b/packages/wallet-connect/dist/cjs/core/src/lib/store.js new file mode 100644 index 000000000..fc078e464 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/store.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStore = void 0; +const rxjs_1 = require("rxjs"); +const services_1 = require("./services"); +const constants_1 = require("./constants"); +const reducer = (state, action) => { + services_1.logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? constants_1.REMEMBER_RECENT_WALLETS_STATE.DISABLED + : constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +const createStore = async (storage) => { + const jsonStorage = new services_1.JsonStorage(storage, constants_1.PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(constants_1.CONTRACT), + selectedWalletId: await jsonStorage.getItem(constants_1.SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new rxjs_1.BehaviorSubject(initialState); + const actions$ = new rxjs_1.Subject(); + actions$.pipe((0, rxjs_1.scan)(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, constants_1.SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, constants_1.CONTRACT, "contract"); + syncStorage(prevState, state, constants_1.RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, constants_1.REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; +exports.createStore = createStore; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/store.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/store.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/store.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/store.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/store.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/testUtils.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/testUtils.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/testUtils.js b/packages/wallet-connect/dist/cjs/core/src/lib/testUtils.js new file mode 100644 index 000000000..5e0cc0df9 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/testUtils.js @@ -0,0 +1,107 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = void 0; +// Remove Jest import +// import * as jest from "jest"; +const jest_mock_extended_1 = require("jest-mock-extended"); +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +const mockWallet = async (factory, deps) => { + const { options, storage } = (0, options_1.resolveOptions)({ + network: (0, options_1.getNetworkPreset)("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const walletModules = new services_1.WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || (0, jest_mock_extended_1.mock)(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +exports.mockWallet = mockWallet; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/translate/translate.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/translate/translate.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/translate/translate.js b/packages/wallet-connect/dist/cjs/core/src/lib/translate/translate.js new file mode 100644 index 000000000..c5573a87c --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/translate/translate.js @@ -0,0 +1,81 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.translate = exports.allowOnlyLanguage = void 0; +const en_json_1 = __importDefault(require("../locale/en.json")); +const es_json_1 = __importDefault(require("../locale/es.json")); +const zh_json_1 = __importDefault(require("../locale/zh.json")); +const bg_json_1 = __importDefault(require("../locale/bg.json")); +const ko_json_1 = __importDefault(require("../locale/ko.json")); +const vi_json_1 = __importDefault(require("../locale/vi.json")); +const hi_json_1 = __importDefault(require("../locale/hi.json")); +const ar_json_1 = __importDefault(require("../locale/ar.json")); +const hr_json_1 = __importDefault(require("../locale/hr.json")); +const mk_json_1 = __importDefault(require("../locale/mk.json")); +const sl_json_1 = __importDefault(require("../locale/sl.json")); +const sr_json_1 = __importDefault(require("../locale/sr.json")); +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en_json_1.default; + case "es": + return es_json_1.default; + case "zh": + return zh_json_1.default; + case "bg": + return bg_json_1.default; + case "ko": + return ko_json_1.default; + case "vi": + return vi_json_1.default; + case "hi": + return hi_json_1.default; + case "ar": + return ar_json_1.default; + case "hr": + return hr_json_1.default; + case "mk": + return mk_json_1.default; + case "sl": + return sl_json_1.default; + case "sr": + return sr_json_1.default; + default: + return en_json_1.default; + } +}; +let chosenLang; +const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +exports.allowOnlyLanguage = allowOnlyLanguage; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; +exports.translate = translate; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/utils.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/utils.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/utils.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/utils.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/utils.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.js b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..8ffb4cc07 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletSelector = void 0; +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +const setupWalletSelector = async (params) => { + const { options, storage } = (0, options_1.resolveOptions)(params); + services_1.Logger.debug = options.debug; + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const network = await (0, options_1.getNetworkPreset)(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new services_1.WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new services_1.Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; +exports.setupWalletSelector = setupWalletSelector; diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet-selector.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet/index.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet/index.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet/index.js b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/index.js new file mode 100644 index 000000000..d7ee97f6b --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./wallet.types"), exports); +__exportStar(require("./transactions.types"), exports); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet/transactions.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet/transactions.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/transactions.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet/wallet.types.d.ts b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/core/src/lib/wallet/wallet.types.js b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/core/src/lib/wallet/wallet.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/index.d.ts b/packages/wallet-connect/dist/cjs/wallet-connect/src/index.d.ts new file mode 100644 index 000000000..9445a40db --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupWalletConnect } from "./lib/wallet-connect"; +export type { WalletConnectParams } from "./lib/wallet-connect"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/index.d.ts.map b/packages/wallet-connect/dist/cjs/wallet-connect/src/index.d.ts.map new file mode 100644 index 000000000..0c891d8dc --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/index.js b/packages/wallet-connect/dist/cjs/wallet-connect/src/index.js new file mode 100644 index 000000000..620103024 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletConnect = void 0; +var wallet_connect_1 = require("./lib/wallet-connect"); +Object.defineProperty(exports, "setupWalletConnect", { enumerable: true, get: function () { return wallet_connect_1.setupWalletConnect; } }); diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/icon.d.ts b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/icon.d.ts new file mode 100644 index 000000000..400ad45f0 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/png;base64,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"; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/icon.d.ts.map b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/icon.d.ts.map new file mode 100644 index 000000000..437a0f61e --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAAg6X"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/icon.js b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/icon.js new file mode 100644 index 000000000..69c7737bb --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/icon.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = `data:image/png;base64,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`; diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/retry.d.ts b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/retry.d.ts new file mode 100644 index 000000000..b17faa59c --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/retry.d.ts @@ -0,0 +1,7 @@ +interface RetryOptions { + retries?: number; + interval?: number; +} +export declare const retry: (func: () => Promise, opts?: RetryOptions) => Promise; +export {}; +//# sourceMappingURL=retry.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/retry.d.ts.map b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/retry.d.ts.map new file mode 100644 index 000000000..0fee7d96f --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/retry.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../../../src/lib/retry.ts"],"names":[],"mappings":"AAAA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,eAAO,MAAM,KAAK,GAAI,KAAK,QACnB,MAAM,OAAO,CAAC,KAAK,CAAC,SACpB,YAAY,KACjB,OAAO,CAAC,KAAK,CAgBf,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/retry.js b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/retry.js new file mode 100644 index 000000000..e30f4b91a --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/retry.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.retry = void 0; +const timeout = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const retry = (func, opts = {}) => { + const { retries = 5, interval = 500 } = opts; + return func().catch((err) => { + if (retries <= 1) { + throw err; + } + return timeout(interval).then(() => { + return (0, exports.retry)(func, { + ...opts, + retries: retries - 1, + interval: interval * 1.5, + }); + }); + }); +}; +exports.retry = retry; diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect-client.d.ts b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect-client.d.ts new file mode 100644 index 000000000..209bdd90b --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect-client.d.ts @@ -0,0 +1,20 @@ +import type { SignClientTypes, EngineTypes } from "@walletconnect/types"; +import type { SessionTypes } from "@walletconnect/types"; +import type { EventEmitterService, WalletEvents } from "@near-wallet-selector/core"; +declare class WalletConnectClient { + private client; + private emitter; + private modal; + init(opts: SignClientTypes.Options): Promise; + constructor(emitter: EventEmitterService); + get session(): import("@walletconnect/types").ISession; + on(event: Event, callback: (args: SignClientTypes.EventArguments[Event]) => void): { + remove: () => import("@walletconnect/types").ISignClientEvents; + }; + once(event: Event, callback: (args: SignClientTypes.EventArguments[Event]) => void): void; + connect(params: EngineTypes.ConnectParams, qrCodeModal: boolean, projectId: string, chainId: string): Promise; + request(params: EngineTypes.RequestParams): Promise; + disconnect(params: EngineTypes.DisconnectParams): Promise; +} +export default WalletConnectClient; +//# sourceMappingURL=wallet-connect-client.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect-client.d.ts.map b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect-client.d.ts.map new file mode 100644 index 000000000..8cf364ba8 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect-client.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-connect-client.d.ts","sourceRoot":"","sources":["../../../../../src/lib/wallet-connect-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACb,MAAM,4BAA4B,CAAC;AAEpC,cAAM,mBAAmB;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,KAAK,CAAsC;IAE7C,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO;gBAI5B,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC;IAItD,IAAI,OAAO,4CAEV;IAED,EAAE,CAAC,KAAK,SAAS,eAAe,CAAC,KAAK,EACpC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI;;;IASjE,IAAI,CAAC,KAAK,SAAS,eAAe,CAAC,KAAK,EACtC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI;IAK3D,OAAO,CACX,MAAM,EAAE,WAAW,CAAC,aAAa,EACjC,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM;IAuCX,OAAO,CAAC,QAAQ,EACpB,MAAM,EAAE,WAAW,CAAC,aAAa,GAChC,OAAO,CAAC,QAAQ,CAAC;IAId,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB;CAGtD;AAED,eAAe,mBAAmB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect-client.js b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect-client.js new file mode 100644 index 000000000..eab922d75 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect-client.js @@ -0,0 +1,100 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const sign_client_1 = __importDefault(require("@walletconnect/sign-client")); +// eslint-disable-next-line @typescript-eslint/consistent-type-imports +let WalletConnectModal; +Promise.resolve().then(() => __importStar(require("@walletconnect/modal"))).then((module) => { + WalletConnectModal = module.WalletConnectModal; +}); +class WalletConnectClient { + client; + emitter; + modal; + async init(opts) { + this.client = await sign_client_1.default.init(opts); + } + constructor(emitter) { + this.emitter = emitter; + } + get session() { + return this.client.session; + } + on(event, callback) { + this.client.on(event, callback); + return { + remove: () => this.client.removeListener(event, callback), + }; + } + once(event, callback) { + this.client.once(event, callback); + } + async connect(params, qrCodeModal, projectId, chainId) { + if (!this.modal) { + this.modal = new WalletConnectModal({ + projectId, + chains: [chainId], + explorerExcludedWalletIds: "ALL", + }); + } + return new Promise((resolve, reject) => { + this.client + .connect(params) + .then(({ uri, approval }) => { + if (uri) { + if (qrCodeModal) { + this.modal.openModal({ + uri, + standaloneChains: [chainId], + }); + this.modal.subscribeModal(({ open }) => { + if (!open) { + reject(new Error("User cancelled pairing")); + } + }); + } + else { + this.emitter.emit("uriChanged", { uri }); + } + } + approval() + .then(resolve) + .catch(reject) + .finally(() => this.modal.closeModal()); + }) + .catch(reject); + }); + } + async request(params) { + return this.client.request(params); + } + async disconnect(params) { + return this.client.disconnect(params); + } +} +exports.default = WalletConnectClient; diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect.d.ts b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect.d.ts new file mode 100644 index 000000000..07f741644 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect.d.ts @@ -0,0 +1,14 @@ +import type { SignClientTypes } from "@walletconnect/types"; +import type { WalletModuleFactory, BridgeWallet } from "@near-wallet-selector/core"; +export interface WalletConnectParams { + projectId: string; + metadata: SignClientTypes.Metadata; + relayUrl?: string; + iconUrl?: string; + chainId?: string; + deprecated?: boolean; + methods?: Array; + events?: Array; +} +export declare function setupWalletConnect({ projectId, metadata, chainId, relayUrl, iconUrl, deprecated, methods, events, }: WalletConnectParams): WalletModuleFactory; +//# sourceMappingURL=wallet-connect.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect.d.ts.map b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect.d.ts.map new file mode 100644 index 000000000..11fed8773 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-connect.d.ts","sourceRoot":"","sources":["../../../../../src/lib/wallet-connect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EASb,MAAM,4BAA4B,CAAC;AAOpC,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB;AA8pBD,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAA0C,EAC1C,OAAc,EACd,UAAkB,EAClB,OAAO,EACP,MAAM,GACP,EAAE,mBAAmB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CA2BzD"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect.js b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect.js new file mode 100644 index 000000000..27c91575e --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-connect/src/lib/wallet-connect.js @@ -0,0 +1,499 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletConnect = setupWalletConnect; +const nearAPI = __importStar(require("near-api-js")); +const core_1 = require("@near-wallet-selector/core"); +const wallet_utils_1 = require("@near-wallet-selector/wallet-utils"); +const wallet_connect_client_1 = __importDefault(require("./wallet-connect-client")); +const icon_js_1 = __importDefault(require("./icon.js")); +const WC_METHODS = [ + "near_signIn", + "near_signOut", + "near_getAccounts", + "near_signTransaction", + "near_signTransactions", + "near_verifyOwner", + "near_signMessage", +]; +const WC_EVENTS = ["chainChanged", "accountsChanged"]; +const setupWalletConnectState = async (id, params, emitter) => { + const client = new wallet_connect_client_1.default(emitter); + let session = null; + const keystore = new nearAPI.keyStores.BrowserLocalStorageKeyStore(window.localStorage, `near-wallet-selector:${id}:keystore:`); + await client.init({ + projectId: params.projectId, + metadata: params.metadata, + relayUrl: params.relayUrl, + }); + if (client.session.length) { + const lastKeyIndex = client.session.keys.length - 1; + session = client.session.get(client.session.keys[lastKeyIndex]); + } + return { + client, + session, + keystore, + subscriptions: [], + }; +}; +const connect = async ({ state, chainId, qrCodeModal, projectId, methods, events, }) => { + return await state.client.connect({ + requiredNamespaces: { + near: { + chains: [chainId], + methods: methods || WC_METHODS, + events: events || WC_EVENTS, + }, + }, + }, qrCodeModal, projectId, chainId); +}; +const disconnect = async ({ state }) => { + await state.client.disconnect({ + topic: state.session.topic, + reason: { + code: 5900, + message: "User disconnected", + }, + }); +}; +const WalletConnect = async ({ id, options, store, params, provider, emitter, logger }) => { + const _state = await setupWalletConnectState(id, params, emitter); + const getChainId = () => { + if (params.chainId) { + return params.chainId; + } + const { networkId } = options.network; + if (["mainnet", "testnet"].includes(networkId)) { + return `near:${networkId}`; + } + throw new Error("Invalid chain id"); + }; + const getAccounts = async () => { + const accounts = _state.session?.namespaces["near"].accounts || []; + const newAccounts = []; + for (let i = 0; i < accounts.length; i++) { + const signer = new nearAPI.InMemorySigner(_state.keystore); + const publicKey = await signer.getPublicKey(accounts[i].split(":")[2], options.network.networkId); + newAccounts.push({ + accountId: accounts[i].split(":")[2], + publicKey: publicKey ? publicKey.toString() : "", + }); + } + return newAccounts; + }; + const cleanup = async () => { + _state.subscriptions.forEach((subscription) => subscription.remove()); + _state.subscriptions = []; + _state.session = null; + }; + const validateAccessKey = (transaction, accessKey) => { + if (accessKey.permission === "FullAccess") { + return accessKey; + } + // eslint-disable-next-line @typescript-eslint/naming-convention + const { receiver_id, method_names } = accessKey.permission.FunctionCall; + if (transaction.receiverId !== receiver_id) { + return null; + } + return transaction.actions.every((action) => { + if (action.type !== "FunctionCall") { + return false; + } + const { methodName, deposit } = action.params; + if (method_names.length && method_names.includes(methodName)) { + return false; + } + return parseFloat(deposit) <= 0; + }); + }; + const signTransactions = async (transactions) => { + const signer = new nearAPI.InMemorySigner(_state.keystore); + const signedTransactions = []; + const block = await provider.block({ finality: "final" }); + for (let i = 0; i < transactions.length; i += 1) { + const transaction = transactions[i]; + const publicKey = await signer.getPublicKey(transaction.signerId, options.network.networkId); + if (!publicKey) { + throw new Error("No public key found"); + } + const accessKey = await provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transaction.signerId, + public_key: publicKey.toString(), + }); + if (!validateAccessKey(transaction, accessKey)) { + throw new Error("Invalid access key"); + } + const tx = nearAPI.transactions.createTransaction(transactions[i].signerId, nearAPI.utils.PublicKey.from(publicKey.toString()), transactions[i].receiverId, accessKey.nonce + i + 1, transaction.actions.map((action) => (0, wallet_utils_1.createAction)(action)), nearAPI.utils.serialize.base_decode(block.header.hash)); + const [, signedTx] = await nearAPI.transactions.signTransaction(tx, signer, transactions[i].signerId, options.network.networkId); + signedTransactions.push(signedTx); + } + return signedTransactions; + }; + const requestAccounts = async () => { + return _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_getAccounts", + params: {}, + }, + }); + }; + const requestVerifyOwner = async (accountId, message) => { + return _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_verifyOwner", + params: { accountId, message }, + }, + }); + }; + const requestSignMessage = async (messageParams) => { + const { message, nonce, recipient, callbackUrl, accountId } = messageParams; + return _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signMessage", + params: { + message, + nonce, + recipient, + ...(callbackUrl && { callbackUrl }), + ...(accountId && { accountId }), + }, + }, + }); + }; + const requestSignTransaction = async (transaction) => { + const accounts = await requestAccounts(); + const account = accounts.find((x) => x.accountId === transaction.signerId); + if (!account) { + throw new Error("Invalid signer id"); + } + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transaction.signerId, + public_key: account.publicKey, + }), + ]); + const tx = nearAPI.transactions.createTransaction(transaction.signerId, nearAPI.utils.PublicKey.from(account.publicKey), transaction.receiverId, accessKey.nonce + 1, transaction.actions.map((action) => (0, wallet_utils_1.createAction)(action)), nearAPI.utils.serialize.base_decode(block.header.hash)); + const result = await _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signTransaction", + params: { transaction: tx.encode() }, + }, + }); + return nearAPI.transactions.SignedTransaction.decode(Buffer.from(result)); + }; + const requestSignTransactions = async (transactions) => { + if (!transactions.length) { + return []; + } + const txs = []; + const [block, accounts] = await Promise.all([ + provider.block({ finality: "final" }), + requestAccounts(), + ]); + for (let i = 0; i < transactions.length; i += 1) { + const transaction = transactions[i]; + const account = accounts.find((x) => x.accountId === transaction.signerId); + if (!account) { + throw new Error("Invalid signer id"); + } + const accessKey = await provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transaction.signerId, + public_key: account.publicKey, + }); + txs.push(nearAPI.transactions.createTransaction(transaction.signerId, nearAPI.utils.PublicKey.from(account.publicKey), transaction.receiverId, accessKey.nonce + i + 1, transaction.actions.map((action) => (0, wallet_utils_1.createAction)(action)), nearAPI.utils.serialize.base_decode(block.header.hash))); + } + const results = await _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signTransactions", + params: { transactions: txs.map((x) => x.encode()) }, + }, + }); + return results.map((result) => { + return nearAPI.transactions.SignedTransaction.decode(Buffer.from(result)); + }); + }; + const createLimitedAccessKeyPairs = async () => { + const accounts = await getAccounts(); + return accounts.map(({ accountId }) => ({ + accountId, + keyPair: nearAPI.utils.KeyPair.fromRandom("ed25519"), + })); + }; + const requestSignIn = async (permission) => { + const keyPairs = await createLimitedAccessKeyPairs(); + const limitedAccessAccounts = keyPairs.map(({ accountId, keyPair }) => ({ + accountId, + publicKey: keyPair.getPublicKey().toString(), + })); + await _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signIn", + params: { + permission: permission, + accounts: limitedAccessAccounts, + }, + }, + }); + for (let i = 0; i < keyPairs.length; i += 1) { + const { accountId, keyPair } = keyPairs[i]; + await _state.keystore.setKey(options.network.networkId, accountId, keyPair); + } + }; + const requestSignOut = async () => { + const accounts = await getAccounts(); + const limitedAccessAccounts = []; + for (let i = 0; i < accounts.length; i += 1) { + const account = accounts[i]; + const keyPair = await _state.keystore.getKey(options.network.networkId, account.accountId); + if (!keyPair) { + continue; + } + limitedAccessAccounts.push({ + accountId: account.accountId, + publicKey: keyPair.getPublicKey().toString(), + }); + } + if (!limitedAccessAccounts.length) { + return; + } + await _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signOut", + params: { + accounts: limitedAccessAccounts, + }, + }, + }); + }; + const signOut = async () => { + if (_state.session) { + await requestSignOut(); + await disconnect({ state: _state }); + } + await cleanup(); + }; + const setupEvents = async () => { + _state.subscriptions.push(_state.client.on("session_update", async (event) => { + logger.log("Session Update", event); + if (event.topic === _state.session?.topic) { + _state.session = { + ..._state.client.session.get(event.topic), + namespaces: event.params.namespaces, + }; + emitter.emit("accountsChanged", { accounts: await getAccounts() }); + } + })); + _state.subscriptions.push(_state.client.on("session_delete", async (event) => { + logger.log("Session Deleted", event); + if (event.topic === _state.session?.topic) { + await cleanup(); + emitter.emit("signedOut", null); + } + })); + }; + if (_state.session) { + await setupEvents(); + } + return { + async signIn({ contractId, methodNames = [], qrCodeModal = true }) { + try { + const { contract } = store.getState(); + if (_state.session && !contract) { + await disconnect({ state: _state }); + await cleanup(); + } + const chainId = getChainId(); + _state.session = await connect({ + state: _state, + chainId, + qrCodeModal, + projectId: params.projectId, + methods: params.methods, + events: params.events, + }); + await requestSignIn({ receiverId: contractId, methodNames }); + await setupEvents(); + return await getAccounts(); + } + catch (err) { + await signOut(); + throw err; + } + }, + signOut, + async getAccounts() { + return getAccounts(); + }, + async verifyOwner({ message }) { + logger.log("WalletConnect:verifyOwner", { message }); + const { contract } = store.getState(); + if (!_state.session || !contract) { + throw new Error("Wallet not signed in"); + } + const account = (0, core_1.getActiveAccount)(store.getState()); + if (!account) { + throw new Error("No active account"); + } + return requestVerifyOwner(account.accountId, message); + }, + async signMessage({ message, nonce, recipient, callbackUrl }) { + logger.log("WalletConnect:signMessage", { message, nonce, recipient }); + try { + const chainId = getChainId(); + if (!_state.session) { + _state.session = _state.session = await connect({ + state: _state, + chainId, + qrCodeModal: true, + projectId: params.projectId, + }); + } + const account = (0, core_1.getActiveAccount)(store.getState()); + return await requestSignMessage({ + message, + nonce, + recipient, + callbackUrl, + accountId: account?.accountId, + }); + } + catch (err) { + await disconnect({ state: _state }); + await cleanup(); + throw err; + } + }, + async signAndSendTransaction({ signerId, receiverId, actions }) { + logger.log("signAndSendTransaction", { signerId, receiverId, actions }); + const { contract } = store.getState(); + if (!_state.session || !contract) { + throw new Error("Wallet not signed in"); + } + const account = (0, core_1.getActiveAccount)(store.getState()); + if (!account) { + throw new Error("No active account"); + } + const resolvedTransaction = { + signerId: signerId || account.accountId, + receiverId: receiverId || contract.contractId, + actions, + }; + try { + const [signedTx] = await signTransactions([resolvedTransaction]); + return provider.sendTransaction(signedTx); + } + catch (err) { + logger.log("Falling back to WalletConnect to sign transaction", err); + const signedTx = await requestSignTransaction(resolvedTransaction); + return provider.sendTransaction(signedTx); + } + }, + async signAndSendTransactions({ transactions }) { + logger.log("signAndSendTransactions", { transactions }); + const { contract } = store.getState(); + if (!_state.session || !contract) { + throw new Error("Wallet not signed in"); + } + const account = (0, core_1.getActiveAccount)(store.getState()); + if (!account) { + throw new Error("No active account"); + } + const resolvedTransactions = transactions.map((x) => ({ + signerId: x.signerId || account.accountId, + receiverId: x.receiverId, + actions: x.actions, + })); + try { + const signedTxs = await signTransactions(resolvedTransactions); + const results = []; + for (let i = 0; i < signedTxs.length; i += 1) { + results.push(await provider.sendTransaction(signedTxs[i])); + } + return results; + } + catch (err) { + const signedTxs = await requestSignTransactions(resolvedTransactions); + const results = []; + for (let i = 0; i < signedTxs.length; i += 1) { + results.push(await provider.sendTransaction(signedTxs[i])); + } + return results; + } + }, + }; +}; +function setupWalletConnect({ projectId, metadata, chainId, relayUrl = "wss://relay.walletconnect.com", iconUrl = icon_js_1.default, deprecated = false, methods, events, }) { + return async () => { + return { + id: "wallet-connect", + type: "bridge", + metadata: { + name: "WalletConnect", + description: "Bridge wallet for NEAR.", + iconUrl, + deprecated, + available: true, + }, + init: (options) => { + return WalletConnect({ + ...options, + params: { + projectId, + metadata, + relayUrl, + chainId, + methods, + events, + }, + }); + }, + }; + }; +} diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/index.d.ts b/packages/wallet-connect/dist/cjs/wallet-utils/src/index.d.ts new file mode 100644 index 000000000..9b70859cc --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/index.d.ts @@ -0,0 +1,2 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/index.d.ts.map b/packages/wallet-connect/dist/cjs/wallet-utils/src/index.d.ts.map new file mode 100644 index 000000000..0d9c8c9c2 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../wallet-utils/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/index.js b/packages/wallet-connect/dist/cjs/wallet-utils/src/index.js new file mode 100644 index 000000000..309bdb658 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = exports.createAction = void 0; +var wallet_utils_1 = require("./lib/wallet-utils"); +Object.defineProperty(exports, "createAction", { enumerable: true, get: function () { return wallet_utils_1.createAction; } }); +Object.defineProperty(exports, "signTransactions", { enumerable: true, get: function () { return wallet_utils_1.signTransactions; } }); diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/create-action.d.ts b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/create-action.d.ts new file mode 100644 index 000000000..da65b4629 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/create-action.d.ts @@ -0,0 +1,4 @@ +import * as nearAPI from "near-api-js"; +import type { Action } from "@near-wallet-selector/core"; +export declare const createAction: (action: Action) => nearAPI.transactions.Action; +//# sourceMappingURL=create-action.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map new file mode 100644 index 000000000..fe8487b52 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"create-action.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/create-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgB3E,eAAO,MAAM,YAAY,WAAY,MAAM,gCAqD1C,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/create-action.js b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/create-action.js new file mode 100644 index 000000000..b4a01ef64 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/create-action.js @@ -0,0 +1,78 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createAction = void 0; +const nearAPI = __importStar(require("near-api-js")); +const { transactions, utils } = nearAPI; +const getAccessKey = (permission) => { + if (permission === "FullAccess") { + return transactions.fullAccessKey(); + } + const { receiverId, methodNames = [] } = permission; + const allowance = permission.allowance + ? BigInt(permission.allowance) + : undefined; + return transactions.functionCallAccessKey(receiverId, methodNames, allowance); +}; +const createAction = (action) => { + switch (action.type) { + case "CreateAccount": + return transactions.createAccount(); + case "DeployContract": { + const { code } = action.params; + return transactions.deployContract(code); + } + case "FunctionCall": { + const { methodName, args, gas, deposit } = action.params; + console.log('alohaws action', action); + return transactions.functionCall(methodName, args, BigInt(gas), BigInt(deposit)); + } + case "Transfer": { + const { deposit } = action.params; + return transactions.transfer(BigInt(deposit)); + } + case "Stake": { + const { stake, publicKey } = action.params; + return transactions.stake(BigInt(stake), utils.PublicKey.from(publicKey)); + } + case "AddKey": { + const { publicKey, accessKey } = action.params; + return transactions.addKey(utils.PublicKey.from(publicKey), + // TODO: Use accessKey.nonce? near-api-js seems to think 0 is fine? + getAccessKey(accessKey.permission)); + } + case "DeleteKey": { + const { publicKey } = action.params; + return transactions.deleteKey(utils.PublicKey.from(publicKey)); + } + case "DeleteAccount": { + const { beneficiaryId } = action.params; + return transactions.deleteAccount(beneficiaryId); + } + default: + throw new Error("Invalid action type"); + } +}; +exports.createAction = createAction; diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts new file mode 100644 index 000000000..fd0b85445 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts @@ -0,0 +1,5 @@ +import type { Signer } from "@near-js/signers"; +import type { SignedTransaction } from "@near-js/transactions"; +import type { Network, Transaction } from "@near-wallet-selector/core/src"; +export declare const signTransactions: (transactions: Array, signer: Signer, network: Network) => Promise; +//# sourceMappingURL=sign-transactions.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map new file mode 100644 index 000000000..9624b4968 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sign-transactions.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/sign-transactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAIzE,eAAO,MAAM,gBAAgB,iBACb,KAAK,CAAC,WAAW,CAAC,UACxB,MAAM,WACL,OAAO,iCAoDjB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/sign-transactions.js b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/sign-transactions.js new file mode 100644 index 000000000..c8c3b6519 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/sign-transactions.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = void 0; +const crypto_1 = require("@near-js/crypto"); +const transactions_1 = require("@near-js/transactions"); +const utils_1 = require("@near-js/utils"); +// import * as nearAPI from "near-api-js"; +const providers_1 = require("@near-js/providers"); +const create_action_1 = require("./create-action"); +const signTransactions = async (transactions, signer, network) => { + const provider = new providers_1.JsonRpcProvider({ + url: network.nodeUrl, + }); + const signedTransactions = []; + for (let i = 0; i < transactions.length; i++) { + const publicKey = await signer.getPublicKey(transactions[i].signerId, network.networkId); + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transactions[i].signerId, + public_key: publicKey.toString(), + }), + ]); + const actions = transactions[i].actions.map((action) => (0, create_action_1.createAction)(action)); + const transaction = (0, transactions_1.createTransaction)(transactions[i].signerId, new crypto_1.PublicKey({ + keyType: crypto_1.KeyType.ED25519, + data: publicKey.data + }), + // PublicKey.from(publicKey.toString()), + transactions[i].receiverId, accessKey.nonce + i + 1, actions, (0, utils_1.baseDecode)(block.header.hash)); + const response = await (0, transactions_1.signTransaction)(transaction, signer, transactions[i].signerId, network.networkId); + signedTransactions.push(response[1]); + } + return signedTransactions; +}; +exports.signTransactions = signTransactions; diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts new file mode 100644 index 000000000..ca97d2268 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts @@ -0,0 +1,4 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; +//# sourceMappingURL=wallet-utils.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map new file mode 100644 index 000000000..209167ee4 --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/wallet-utils.js b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/wallet-utils.js new file mode 100644 index 000000000..1d0db17bd --- /dev/null +++ b/packages/wallet-connect/dist/cjs/wallet-utils/src/lib/wallet-utils.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = exports.createAction = void 0; +const create_action_1 = require("./create-action"); +Object.defineProperty(exports, "createAction", { enumerable: true, get: function () { return create_action_1.createAction; } }); +const sign_transactions_1 = require("./sign-transactions"); +Object.defineProperty(exports, "signTransactions", { enumerable: true, get: function () { return sign_transactions_1.signTransactions; } }); diff --git a/packages/wallet-connect/dist/esm/core/src/index.d.ts b/packages/wallet-connect/dist/esm/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/index.d.ts.map b/packages/wallet-connect/dist/esm/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/index.js b/packages/wallet-connect/dist/esm/core/src/index.js new file mode 100644 index 000000000..a545ffa59 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/index.js @@ -0,0 +1,5 @@ +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export { EventEmitter } from "./lib/services"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/constants.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/constants.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/constants.js b/packages/wallet-connect/dist/esm/core/src/lib/constants.js new file mode 100644 index 000000000..a75f1a50e --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/constants.js @@ -0,0 +1,11 @@ +export const PACKAGE_NAME = "near-wallet-selector"; +export const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export const REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +export const CONTRACT = "contract"; +export const PENDING_CONTRACT = "contract:pending"; +export const SELECTED_WALLET_ID = `selectedWalletId`; +export const PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/detect-browser.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/detect-browser.js b/packages/wallet-connect/dist/esm/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..c4e583914 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,70 @@ +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +export const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/getActiveAccount.js b/packages/wallet-connect/dist/esm/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..b2db314cb --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,3 @@ +export const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/index.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/index.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/index.js b/packages/wallet-connect/dist/esm/core/src/lib/helpers/index.js new file mode 100644 index 000000000..69aaf908c --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/index.js @@ -0,0 +1,5 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/payload.js b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..f2a7f147e --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,97 @@ +import { serialize } from "borsh"; +export const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +export const payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +export const serializeNep413 = (signMessageParams) => { + const payload = createPayload(signMessageParams); + return Buffer.from(serialize(payloadSchema, payload)); +}; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..f08e83f02 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,39 @@ +import { serialize } from "borsh"; +import { sha256 } from "js-sha256"; +import { payloadSchema } from "./payload"; +import { publicKeyFrom } from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import { JsonRpcProvider } from "@near-js/providers"; +export const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = serialize(payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = publicKeyFrom(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +export const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/waitFor.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/waitFor.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/helpers/waitFor.js b/packages/wallet-connect/dist/esm/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..55fc5398f --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/helpers/waitFor.js @@ -0,0 +1,22 @@ +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +export const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/ar.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/bg.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/en.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/es.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/hi.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/hr.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/ko.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/mk.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/sl.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/sr.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/vi.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/locale/zh.json b/packages/wallet-connect/dist/esm/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/options.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/options.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/options.js b/packages/wallet-connect/dist/esm/core/src/lib/options.js new file mode 100644 index 000000000..fa6b65f26 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/options.js @@ -0,0 +1,40 @@ +import { WebStorageService } from "./services"; +export const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +export const resolveNetwork = (network) => { + return typeof network === "string" ? getNetworkPreset(network) : network; +}; +export const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: resolveNetwork(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new WebStorageService(), + }; +}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/options.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/options.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/options.types.js b/packages/wallet-connect/dist/esm/core/src/lib/options.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/options.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..304200d75 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,16 @@ +import { EventEmitter as NEventEmitter } from "events"; +export class EventEmitter { + emitter = new NEventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/index.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/index.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/index.js b/packages/wallet-connect/dist/esm/core/src/lib/services/index.js new file mode 100644 index 000000000..5301a0f98 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/index.js @@ -0,0 +1,11 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.js b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..d1ca57bc4 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,32 @@ +export class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +export const logger = new Logger(); diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.types.js b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.js b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..bfcf13b62 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,43 @@ +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +export class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new JsonRpcProvider({ url })) + : []; + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.types.js b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.js b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..a9175d614 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,25 @@ +const KEY_DELIMITER = ":"; +export class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.types.js b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/storage.service.types.js b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/storage/web-storage.service.js b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..3b6ee32f5 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,20 @@ +export class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..d5aa498d4 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,321 @@ +import { EventEmitter } from "../event-emitter/event-emitter.service"; +import { Logger, logger } from "../logger/logger.service"; +import { RECENTLY_SIGNED_IN_WALLETS, PACKAGE_NAME, PENDING_CONTRACT, PENDING_SELECTED_WALLET_ID, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "../../constants"; +import { JsonStorage } from "../storage/json-storage.service"; +export class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger.log(`Failed to validate ${wallet.id} during setup`); + logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger.log("Failed to sign out existing wallet"); + logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger.log(`Failed to sign out ${wallet.id}`); + logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new Logger(module.id), + storage: new JsonStorage(this.storage, [PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger.log("Failed to setup module"); + logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger.error("Failed to sign in to wallet. " + err); + } + } + } +} diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/store.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/store.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/store.js b/packages/wallet-connect/dist/esm/core/src/lib/store.js new file mode 100644 index 000000000..32dc79078 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/store.js @@ -0,0 +1,154 @@ +import { Subject, BehaviorSubject, scan } from "rxjs"; +import { logger, JsonStorage } from "./services"; +import { PACKAGE_NAME, CONTRACT, SELECTED_WALLET_ID, RECENTLY_SIGNED_IN_WALLETS, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "./constants"; +const reducer = (state, action) => { + logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? REMEMBER_RECENT_WALLETS_STATE.DISABLED + : REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +export const createStore = async (storage) => { + const jsonStorage = new JsonStorage(storage, PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(CONTRACT), + selectedWalletId: await jsonStorage.getItem(SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new BehaviorSubject(initialState); + const actions$ = new Subject(); + actions$.pipe(scan(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, CONTRACT, "contract"); + syncStorage(prevState, state, RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/store.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/store.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/store.types.js b/packages/wallet-connect/dist/esm/core/src/lib/store.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/store.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/testUtils.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/testUtils.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/testUtils.js b/packages/wallet-connect/dist/esm/core/src/lib/testUtils.js new file mode 100644 index 000000000..7e90e1ce8 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/testUtils.js @@ -0,0 +1,103 @@ +// Remove Jest import +// import * as jest from "jest"; +import { mock } from "jest-mock-extended"; +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, WalletModules } from "./services"; +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +export const mockWallet = async (factory, deps) => { + const { options, storage } = resolveOptions({ + network: getNetworkPreset("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new EventEmitter(); + const store = await createStore(storage); + const walletModules = new WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || mock(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/translate/translate.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/translate/translate.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/translate/translate.js b/packages/wallet-connect/dist/esm/core/src/lib/translate/translate.js new file mode 100644 index 000000000..610c02a94 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/translate/translate.js @@ -0,0 +1,73 @@ +import en from "../locale/en.json"; +import es from "../locale/es.json"; +import zh from "../locale/zh.json"; +import bg from "../locale/bg.json"; +import ko from "../locale/ko.json"; +import vi from "../locale/vi.json"; +import hi from "../locale/hi.json"; +import ar from "../locale/ar.json"; +import hr from "../locale/hr.json"; +import mk from "../locale/mk.json"; +import sl from "../locale/sl.json"; +import sr from "../locale/sr.json"; +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en; + case "es": + return es; + case "zh": + return zh; + case "bg": + return bg; + case "ko": + return ko; + case "vi": + return vi; + case "hi": + return hi; + case "ar": + return ar; + case "hr": + return hr; + case "mk": + return mk; + case "sl": + return sl; + case "sr": + return sr; + default: + return en; + } +}; +let chosenLang; +export const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +export const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/utils.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/utils.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/utils.types.js b/packages/wallet-connect/dist/esm/core/src/lib/utils.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/utils.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.js b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..af67afbb6 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.js @@ -0,0 +1,79 @@ +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, Logger, WalletModules, Provider } from "./services"; +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export const setupWalletSelector = async (params) => { + const { options, storage } = resolveOptions(params); + Logger.debug = options.debug; + const emitter = new EventEmitter(); + const store = await createStore(storage); + const network = await getNetworkPreset(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.types.js b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet-selector.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet/index.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet/index.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet/index.js b/packages/wallet-connect/dist/esm/core/src/lib/wallet/index.js new file mode 100644 index 000000000..bd35cba8b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet/index.js @@ -0,0 +1,2 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet/transactions.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet/transactions.types.js b/packages/wallet-connect/dist/esm/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet/transactions.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet/wallet.types.d.ts b/packages/wallet-connect/dist/esm/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map b/packages/wallet-connect/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/core/src/lib/wallet/wallet.types.js b/packages/wallet-connect/dist/esm/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-connect/dist/esm/core/src/lib/wallet/wallet.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/index.d.ts b/packages/wallet-connect/dist/esm/wallet-connect/src/index.d.ts new file mode 100644 index 000000000..9445a40db --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/index.d.ts @@ -0,0 +1,3 @@ +export { setupWalletConnect } from "./lib/wallet-connect"; +export type { WalletConnectParams } from "./lib/wallet-connect"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/index.d.ts.map b/packages/wallet-connect/dist/esm/wallet-connect/src/index.d.ts.map new file mode 100644 index 000000000..0c891d8dc --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/index.js b/packages/wallet-connect/dist/esm/wallet-connect/src/index.js new file mode 100644 index 000000000..18934f2b6 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/index.js @@ -0,0 +1 @@ +export { setupWalletConnect } from "./lib/wallet-connect"; diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/icon.d.ts b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/icon.d.ts new file mode 100644 index 000000000..400ad45f0 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/icon.d.ts @@ -0,0 +1,3 @@ +declare const _default: "data:image/png;base64,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"; +export default _default; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/icon.d.ts.map b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/icon.d.ts.map new file mode 100644 index 000000000..437a0f61e --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/lib/icon.ts"],"names":[],"mappings":";AAAA,wBAAg6X"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/icon.js b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/icon.js new file mode 100644 index 000000000..1263c8eb4 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/icon.js @@ -0,0 +1 @@ +export default `data:image/png;base64,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`; diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/retry.d.ts b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/retry.d.ts new file mode 100644 index 000000000..b17faa59c --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/retry.d.ts @@ -0,0 +1,7 @@ +interface RetryOptions { + retries?: number; + interval?: number; +} +export declare const retry: (func: () => Promise, opts?: RetryOptions) => Promise; +export {}; +//# sourceMappingURL=retry.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/retry.d.ts.map b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/retry.d.ts.map new file mode 100644 index 000000000..0fee7d96f --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/retry.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../../../src/lib/retry.ts"],"names":[],"mappings":"AAAA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,eAAO,MAAM,KAAK,GAAI,KAAK,QACnB,MAAM,OAAO,CAAC,KAAK,CAAC,SACpB,YAAY,KACjB,OAAO,CAAC,KAAK,CAgBf,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/retry.js b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/retry.js new file mode 100644 index 000000000..1ebac475e --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/retry.js @@ -0,0 +1,18 @@ +const timeout = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +export const retry = (func, opts = {}) => { + const { retries = 5, interval = 500 } = opts; + return func().catch((err) => { + if (retries <= 1) { + throw err; + } + return timeout(interval).then(() => { + return retry(func, { + ...opts, + retries: retries - 1, + interval: interval * 1.5, + }); + }); + }); +}; diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect-client.d.ts b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect-client.d.ts new file mode 100644 index 000000000..209bdd90b --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect-client.d.ts @@ -0,0 +1,20 @@ +import type { SignClientTypes, EngineTypes } from "@walletconnect/types"; +import type { SessionTypes } from "@walletconnect/types"; +import type { EventEmitterService, WalletEvents } from "@near-wallet-selector/core"; +declare class WalletConnectClient { + private client; + private emitter; + private modal; + init(opts: SignClientTypes.Options): Promise; + constructor(emitter: EventEmitterService); + get session(): import("@walletconnect/types").ISession; + on(event: Event, callback: (args: SignClientTypes.EventArguments[Event]) => void): { + remove: () => import("@walletconnect/types").ISignClientEvents; + }; + once(event: Event, callback: (args: SignClientTypes.EventArguments[Event]) => void): void; + connect(params: EngineTypes.ConnectParams, qrCodeModal: boolean, projectId: string, chainId: string): Promise; + request(params: EngineTypes.RequestParams): Promise; + disconnect(params: EngineTypes.DisconnectParams): Promise; +} +export default WalletConnectClient; +//# sourceMappingURL=wallet-connect-client.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect-client.d.ts.map b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect-client.d.ts.map new file mode 100644 index 000000000..8cf364ba8 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect-client.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-connect-client.d.ts","sourceRoot":"","sources":["../../../../../src/lib/wallet-connect-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACb,MAAM,4BAA4B,CAAC;AAEpC,cAAM,mBAAmB;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,KAAK,CAAsC;IAE7C,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO;gBAI5B,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC;IAItD,IAAI,OAAO,4CAEV;IAED,EAAE,CAAC,KAAK,SAAS,eAAe,CAAC,KAAK,EACpC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI;;;IASjE,IAAI,CAAC,KAAK,SAAS,eAAe,CAAC,KAAK,EACtC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI;IAK3D,OAAO,CACX,MAAM,EAAE,WAAW,CAAC,aAAa,EACjC,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM;IAuCX,OAAO,CAAC,QAAQ,EACpB,MAAM,EAAE,WAAW,CAAC,aAAa,GAChC,OAAO,CAAC,QAAQ,CAAC;IAId,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB;CAGtD;AAED,eAAe,mBAAmB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect-client.js b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect-client.js new file mode 100644 index 000000000..17432f47f --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect-client.js @@ -0,0 +1,72 @@ +import Client from "@walletconnect/sign-client"; +// eslint-disable-next-line @typescript-eslint/consistent-type-imports +let WalletConnectModal; +import("@walletconnect/modal").then((module) => { + WalletConnectModal = module.WalletConnectModal; +}); +class WalletConnectClient { + client; + emitter; + modal; + async init(opts) { + this.client = await Client.init(opts); + } + constructor(emitter) { + this.emitter = emitter; + } + get session() { + return this.client.session; + } + on(event, callback) { + this.client.on(event, callback); + return { + remove: () => this.client.removeListener(event, callback), + }; + } + once(event, callback) { + this.client.once(event, callback); + } + async connect(params, qrCodeModal, projectId, chainId) { + if (!this.modal) { + this.modal = new WalletConnectModal({ + projectId, + chains: [chainId], + explorerExcludedWalletIds: "ALL", + }); + } + return new Promise((resolve, reject) => { + this.client + .connect(params) + .then(({ uri, approval }) => { + if (uri) { + if (qrCodeModal) { + this.modal.openModal({ + uri, + standaloneChains: [chainId], + }); + this.modal.subscribeModal(({ open }) => { + if (!open) { + reject(new Error("User cancelled pairing")); + } + }); + } + else { + this.emitter.emit("uriChanged", { uri }); + } + } + approval() + .then(resolve) + .catch(reject) + .finally(() => this.modal.closeModal()); + }) + .catch(reject); + }); + } + async request(params) { + return this.client.request(params); + } + async disconnect(params) { + return this.client.disconnect(params); + } +} +export default WalletConnectClient; diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect.d.ts b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect.d.ts new file mode 100644 index 000000000..07f741644 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect.d.ts @@ -0,0 +1,14 @@ +import type { SignClientTypes } from "@walletconnect/types"; +import type { WalletModuleFactory, BridgeWallet } from "@near-wallet-selector/core"; +export interface WalletConnectParams { + projectId: string; + metadata: SignClientTypes.Metadata; + relayUrl?: string; + iconUrl?: string; + chainId?: string; + deprecated?: boolean; + methods?: Array; + events?: Array; +} +export declare function setupWalletConnect({ projectId, metadata, chainId, relayUrl, iconUrl, deprecated, methods, events, }: WalletConnectParams): WalletModuleFactory; +//# sourceMappingURL=wallet-connect.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect.d.ts.map b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect.d.ts.map new file mode 100644 index 000000000..11fed8773 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-connect.d.ts","sourceRoot":"","sources":["../../../../../src/lib/wallet-connect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EASb,MAAM,4BAA4B,CAAC;AAOpC,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB;AA8pBD,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAA0C,EAC1C,OAAc,EACd,UAAkB,EAClB,OAAO,EACP,MAAM,GACP,EAAE,mBAAmB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CA2BzD"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect.js b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect.js new file mode 100644 index 000000000..ac7293d4d --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-connect/src/lib/wallet-connect.js @@ -0,0 +1,470 @@ +import * as nearAPI from "near-api-js"; +import { getActiveAccount } from "@near-wallet-selector/core"; +import { createAction } from "@near-wallet-selector/wallet-utils"; +import WalletConnectClient from "./wallet-connect-client"; +import icon from "./icon.js"; +const WC_METHODS = [ + "near_signIn", + "near_signOut", + "near_getAccounts", + "near_signTransaction", + "near_signTransactions", + "near_verifyOwner", + "near_signMessage", +]; +const WC_EVENTS = ["chainChanged", "accountsChanged"]; +const setupWalletConnectState = async (id, params, emitter) => { + const client = new WalletConnectClient(emitter); + let session = null; + const keystore = new nearAPI.keyStores.BrowserLocalStorageKeyStore(window.localStorage, `near-wallet-selector:${id}:keystore:`); + await client.init({ + projectId: params.projectId, + metadata: params.metadata, + relayUrl: params.relayUrl, + }); + if (client.session.length) { + const lastKeyIndex = client.session.keys.length - 1; + session = client.session.get(client.session.keys[lastKeyIndex]); + } + return { + client, + session, + keystore, + subscriptions: [], + }; +}; +const connect = async ({ state, chainId, qrCodeModal, projectId, methods, events, }) => { + return await state.client.connect({ + requiredNamespaces: { + near: { + chains: [chainId], + methods: methods || WC_METHODS, + events: events || WC_EVENTS, + }, + }, + }, qrCodeModal, projectId, chainId); +}; +const disconnect = async ({ state }) => { + await state.client.disconnect({ + topic: state.session.topic, + reason: { + code: 5900, + message: "User disconnected", + }, + }); +}; +const WalletConnect = async ({ id, options, store, params, provider, emitter, logger }) => { + const _state = await setupWalletConnectState(id, params, emitter); + const getChainId = () => { + if (params.chainId) { + return params.chainId; + } + const { networkId } = options.network; + if (["mainnet", "testnet"].includes(networkId)) { + return `near:${networkId}`; + } + throw new Error("Invalid chain id"); + }; + const getAccounts = async () => { + const accounts = _state.session?.namespaces["near"].accounts || []; + const newAccounts = []; + for (let i = 0; i < accounts.length; i++) { + const signer = new nearAPI.InMemorySigner(_state.keystore); + const publicKey = await signer.getPublicKey(accounts[i].split(":")[2], options.network.networkId); + newAccounts.push({ + accountId: accounts[i].split(":")[2], + publicKey: publicKey ? publicKey.toString() : "", + }); + } + return newAccounts; + }; + const cleanup = async () => { + _state.subscriptions.forEach((subscription) => subscription.remove()); + _state.subscriptions = []; + _state.session = null; + }; + const validateAccessKey = (transaction, accessKey) => { + if (accessKey.permission === "FullAccess") { + return accessKey; + } + // eslint-disable-next-line @typescript-eslint/naming-convention + const { receiver_id, method_names } = accessKey.permission.FunctionCall; + if (transaction.receiverId !== receiver_id) { + return null; + } + return transaction.actions.every((action) => { + if (action.type !== "FunctionCall") { + return false; + } + const { methodName, deposit } = action.params; + if (method_names.length && method_names.includes(methodName)) { + return false; + } + return parseFloat(deposit) <= 0; + }); + }; + const signTransactions = async (transactions) => { + const signer = new nearAPI.InMemorySigner(_state.keystore); + const signedTransactions = []; + const block = await provider.block({ finality: "final" }); + for (let i = 0; i < transactions.length; i += 1) { + const transaction = transactions[i]; + const publicKey = await signer.getPublicKey(transaction.signerId, options.network.networkId); + if (!publicKey) { + throw new Error("No public key found"); + } + const accessKey = await provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transaction.signerId, + public_key: publicKey.toString(), + }); + if (!validateAccessKey(transaction, accessKey)) { + throw new Error("Invalid access key"); + } + const tx = nearAPI.transactions.createTransaction(transactions[i].signerId, nearAPI.utils.PublicKey.from(publicKey.toString()), transactions[i].receiverId, accessKey.nonce + i + 1, transaction.actions.map((action) => createAction(action)), nearAPI.utils.serialize.base_decode(block.header.hash)); + const [, signedTx] = await nearAPI.transactions.signTransaction(tx, signer, transactions[i].signerId, options.network.networkId); + signedTransactions.push(signedTx); + } + return signedTransactions; + }; + const requestAccounts = async () => { + return _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_getAccounts", + params: {}, + }, + }); + }; + const requestVerifyOwner = async (accountId, message) => { + return _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_verifyOwner", + params: { accountId, message }, + }, + }); + }; + const requestSignMessage = async (messageParams) => { + const { message, nonce, recipient, callbackUrl, accountId } = messageParams; + return _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signMessage", + params: { + message, + nonce, + recipient, + ...(callbackUrl && { callbackUrl }), + ...(accountId && { accountId }), + }, + }, + }); + }; + const requestSignTransaction = async (transaction) => { + const accounts = await requestAccounts(); + const account = accounts.find((x) => x.accountId === transaction.signerId); + if (!account) { + throw new Error("Invalid signer id"); + } + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transaction.signerId, + public_key: account.publicKey, + }), + ]); + const tx = nearAPI.transactions.createTransaction(transaction.signerId, nearAPI.utils.PublicKey.from(account.publicKey), transaction.receiverId, accessKey.nonce + 1, transaction.actions.map((action) => createAction(action)), nearAPI.utils.serialize.base_decode(block.header.hash)); + const result = await _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signTransaction", + params: { transaction: tx.encode() }, + }, + }); + return nearAPI.transactions.SignedTransaction.decode(Buffer.from(result)); + }; + const requestSignTransactions = async (transactions) => { + if (!transactions.length) { + return []; + } + const txs = []; + const [block, accounts] = await Promise.all([ + provider.block({ finality: "final" }), + requestAccounts(), + ]); + for (let i = 0; i < transactions.length; i += 1) { + const transaction = transactions[i]; + const account = accounts.find((x) => x.accountId === transaction.signerId); + if (!account) { + throw new Error("Invalid signer id"); + } + const accessKey = await provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transaction.signerId, + public_key: account.publicKey, + }); + txs.push(nearAPI.transactions.createTransaction(transaction.signerId, nearAPI.utils.PublicKey.from(account.publicKey), transaction.receiverId, accessKey.nonce + i + 1, transaction.actions.map((action) => createAction(action)), nearAPI.utils.serialize.base_decode(block.header.hash))); + } + const results = await _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signTransactions", + params: { transactions: txs.map((x) => x.encode()) }, + }, + }); + return results.map((result) => { + return nearAPI.transactions.SignedTransaction.decode(Buffer.from(result)); + }); + }; + const createLimitedAccessKeyPairs = async () => { + const accounts = await getAccounts(); + return accounts.map(({ accountId }) => ({ + accountId, + keyPair: nearAPI.utils.KeyPair.fromRandom("ed25519"), + })); + }; + const requestSignIn = async (permission) => { + const keyPairs = await createLimitedAccessKeyPairs(); + const limitedAccessAccounts = keyPairs.map(({ accountId, keyPair }) => ({ + accountId, + publicKey: keyPair.getPublicKey().toString(), + })); + await _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signIn", + params: { + permission: permission, + accounts: limitedAccessAccounts, + }, + }, + }); + for (let i = 0; i < keyPairs.length; i += 1) { + const { accountId, keyPair } = keyPairs[i]; + await _state.keystore.setKey(options.network.networkId, accountId, keyPair); + } + }; + const requestSignOut = async () => { + const accounts = await getAccounts(); + const limitedAccessAccounts = []; + for (let i = 0; i < accounts.length; i += 1) { + const account = accounts[i]; + const keyPair = await _state.keystore.getKey(options.network.networkId, account.accountId); + if (!keyPair) { + continue; + } + limitedAccessAccounts.push({ + accountId: account.accountId, + publicKey: keyPair.getPublicKey().toString(), + }); + } + if (!limitedAccessAccounts.length) { + return; + } + await _state.client.request({ + topic: _state.session.topic, + chainId: getChainId(), + request: { + method: "near_signOut", + params: { + accounts: limitedAccessAccounts, + }, + }, + }); + }; + const signOut = async () => { + if (_state.session) { + await requestSignOut(); + await disconnect({ state: _state }); + } + await cleanup(); + }; + const setupEvents = async () => { + _state.subscriptions.push(_state.client.on("session_update", async (event) => { + logger.log("Session Update", event); + if (event.topic === _state.session?.topic) { + _state.session = { + ..._state.client.session.get(event.topic), + namespaces: event.params.namespaces, + }; + emitter.emit("accountsChanged", { accounts: await getAccounts() }); + } + })); + _state.subscriptions.push(_state.client.on("session_delete", async (event) => { + logger.log("Session Deleted", event); + if (event.topic === _state.session?.topic) { + await cleanup(); + emitter.emit("signedOut", null); + } + })); + }; + if (_state.session) { + await setupEvents(); + } + return { + async signIn({ contractId, methodNames = [], qrCodeModal = true }) { + try { + const { contract } = store.getState(); + if (_state.session && !contract) { + await disconnect({ state: _state }); + await cleanup(); + } + const chainId = getChainId(); + _state.session = await connect({ + state: _state, + chainId, + qrCodeModal, + projectId: params.projectId, + methods: params.methods, + events: params.events, + }); + await requestSignIn({ receiverId: contractId, methodNames }); + await setupEvents(); + return await getAccounts(); + } + catch (err) { + await signOut(); + throw err; + } + }, + signOut, + async getAccounts() { + return getAccounts(); + }, + async verifyOwner({ message }) { + logger.log("WalletConnect:verifyOwner", { message }); + const { contract } = store.getState(); + if (!_state.session || !contract) { + throw new Error("Wallet not signed in"); + } + const account = getActiveAccount(store.getState()); + if (!account) { + throw new Error("No active account"); + } + return requestVerifyOwner(account.accountId, message); + }, + async signMessage({ message, nonce, recipient, callbackUrl }) { + logger.log("WalletConnect:signMessage", { message, nonce, recipient }); + try { + const chainId = getChainId(); + if (!_state.session) { + _state.session = _state.session = await connect({ + state: _state, + chainId, + qrCodeModal: true, + projectId: params.projectId, + }); + } + const account = getActiveAccount(store.getState()); + return await requestSignMessage({ + message, + nonce, + recipient, + callbackUrl, + accountId: account?.accountId, + }); + } + catch (err) { + await disconnect({ state: _state }); + await cleanup(); + throw err; + } + }, + async signAndSendTransaction({ signerId, receiverId, actions }) { + logger.log("signAndSendTransaction", { signerId, receiverId, actions }); + const { contract } = store.getState(); + if (!_state.session || !contract) { + throw new Error("Wallet not signed in"); + } + const account = getActiveAccount(store.getState()); + if (!account) { + throw new Error("No active account"); + } + const resolvedTransaction = { + signerId: signerId || account.accountId, + receiverId: receiverId || contract.contractId, + actions, + }; + try { + const [signedTx] = await signTransactions([resolvedTransaction]); + return provider.sendTransaction(signedTx); + } + catch (err) { + logger.log("Falling back to WalletConnect to sign transaction", err); + const signedTx = await requestSignTransaction(resolvedTransaction); + return provider.sendTransaction(signedTx); + } + }, + async signAndSendTransactions({ transactions }) { + logger.log("signAndSendTransactions", { transactions }); + const { contract } = store.getState(); + if (!_state.session || !contract) { + throw new Error("Wallet not signed in"); + } + const account = getActiveAccount(store.getState()); + if (!account) { + throw new Error("No active account"); + } + const resolvedTransactions = transactions.map((x) => ({ + signerId: x.signerId || account.accountId, + receiverId: x.receiverId, + actions: x.actions, + })); + try { + const signedTxs = await signTransactions(resolvedTransactions); + const results = []; + for (let i = 0; i < signedTxs.length; i += 1) { + results.push(await provider.sendTransaction(signedTxs[i])); + } + return results; + } + catch (err) { + const signedTxs = await requestSignTransactions(resolvedTransactions); + const results = []; + for (let i = 0; i < signedTxs.length; i += 1) { + results.push(await provider.sendTransaction(signedTxs[i])); + } + return results; + } + }, + }; +}; +export function setupWalletConnect({ projectId, metadata, chainId, relayUrl = "wss://relay.walletconnect.com", iconUrl = icon, deprecated = false, methods, events, }) { + return async () => { + return { + id: "wallet-connect", + type: "bridge", + metadata: { + name: "WalletConnect", + description: "Bridge wallet for NEAR.", + iconUrl, + deprecated, + available: true, + }, + init: (options) => { + return WalletConnect({ + ...options, + params: { + projectId, + metadata, + relayUrl, + chainId, + methods, + events, + }, + }); + }, + }; + }; +} diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/index.d.ts b/packages/wallet-connect/dist/esm/wallet-utils/src/index.d.ts new file mode 100644 index 000000000..9b70859cc --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/index.d.ts @@ -0,0 +1,2 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/index.d.ts.map b/packages/wallet-connect/dist/esm/wallet-utils/src/index.d.ts.map new file mode 100644 index 000000000..0d9c8c9c2 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../wallet-utils/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/index.js b/packages/wallet-connect/dist/esm/wallet-utils/src/index.js new file mode 100644 index 000000000..27b22f6ee --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/index.js @@ -0,0 +1 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/lib/create-action.d.ts b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/create-action.d.ts new file mode 100644 index 000000000..da65b4629 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/create-action.d.ts @@ -0,0 +1,4 @@ +import * as nearAPI from "near-api-js"; +import type { Action } from "@near-wallet-selector/core"; +export declare const createAction: (action: Action) => nearAPI.transactions.Action; +//# sourceMappingURL=create-action.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/lib/create-action.d.ts.map b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/create-action.d.ts.map new file mode 100644 index 000000000..fe8487b52 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/create-action.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"create-action.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/create-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgB3E,eAAO,MAAM,YAAY,WAAY,MAAM,gCAqD1C,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/lib/create-action.js b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/create-action.js new file mode 100644 index 000000000..d49ee0465 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/create-action.js @@ -0,0 +1,51 @@ +import * as nearAPI from "near-api-js"; +const { transactions, utils } = nearAPI; +const getAccessKey = (permission) => { + if (permission === "FullAccess") { + return transactions.fullAccessKey(); + } + const { receiverId, methodNames = [] } = permission; + const allowance = permission.allowance + ? BigInt(permission.allowance) + : undefined; + return transactions.functionCallAccessKey(receiverId, methodNames, allowance); +}; +export const createAction = (action) => { + switch (action.type) { + case "CreateAccount": + return transactions.createAccount(); + case "DeployContract": { + const { code } = action.params; + return transactions.deployContract(code); + } + case "FunctionCall": { + const { methodName, args, gas, deposit } = action.params; + console.log('alohaws action', action); + return transactions.functionCall(methodName, args, BigInt(gas), BigInt(deposit)); + } + case "Transfer": { + const { deposit } = action.params; + return transactions.transfer(BigInt(deposit)); + } + case "Stake": { + const { stake, publicKey } = action.params; + return transactions.stake(BigInt(stake), utils.PublicKey.from(publicKey)); + } + case "AddKey": { + const { publicKey, accessKey } = action.params; + return transactions.addKey(utils.PublicKey.from(publicKey), + // TODO: Use accessKey.nonce? near-api-js seems to think 0 is fine? + getAccessKey(accessKey.permission)); + } + case "DeleteKey": { + const { publicKey } = action.params; + return transactions.deleteKey(utils.PublicKey.from(publicKey)); + } + case "DeleteAccount": { + const { beneficiaryId } = action.params; + return transactions.deleteAccount(beneficiaryId); + } + default: + throw new Error("Invalid action type"); + } +}; diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts new file mode 100644 index 000000000..fd0b85445 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts @@ -0,0 +1,5 @@ +import type { Signer } from "@near-js/signers"; +import type { SignedTransaction } from "@near-js/transactions"; +import type { Network, Transaction } from "@near-wallet-selector/core/src"; +export declare const signTransactions: (transactions: Array, signer: Signer, network: Network) => Promise; +//# sourceMappingURL=sign-transactions.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map new file mode 100644 index 000000000..9624b4968 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sign-transactions.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/sign-transactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAIzE,eAAO,MAAM,gBAAgB,iBACb,KAAK,CAAC,WAAW,CAAC,UACxB,MAAM,WACL,OAAO,iCAoDjB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/lib/sign-transactions.js b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/sign-transactions.js new file mode 100644 index 000000000..d7d30548c --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/sign-transactions.js @@ -0,0 +1,34 @@ +import { KeyType, PublicKey } from "@near-js/crypto"; +import { createTransaction, signTransaction } from "@near-js/transactions"; +import { baseDecode } from "@near-js/utils"; +// import * as nearAPI from "near-api-js"; +import { JsonRpcProvider } from "@near-js/providers"; +import { createAction } from "./create-action"; +export const signTransactions = async (transactions, signer, network) => { + const provider = new JsonRpcProvider({ + url: network.nodeUrl, + }); + const signedTransactions = []; + for (let i = 0; i < transactions.length; i++) { + const publicKey = await signer.getPublicKey(transactions[i].signerId, network.networkId); + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transactions[i].signerId, + public_key: publicKey.toString(), + }), + ]); + const actions = transactions[i].actions.map((action) => createAction(action)); + const transaction = createTransaction(transactions[i].signerId, new PublicKey({ + keyType: KeyType.ED25519, + data: publicKey.data + }), + // PublicKey.from(publicKey.toString()), + transactions[i].receiverId, accessKey.nonce + i + 1, actions, baseDecode(block.header.hash)); + const response = await signTransaction(transaction, signer, transactions[i].signerId, network.networkId); + signedTransactions.push(response[1]); + } + return signedTransactions; +}; diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts new file mode 100644 index 000000000..ca97d2268 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts @@ -0,0 +1,4 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; +//# sourceMappingURL=wallet-utils.d.ts.map \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map new file mode 100644 index 000000000..209167ee4 --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../../../../../wallet-utils/src/lib/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-connect/dist/esm/wallet-utils/src/lib/wallet-utils.js b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/wallet-utils.js new file mode 100644 index 000000000..d5a53e83f --- /dev/null +++ b/packages/wallet-connect/dist/esm/wallet-utils/src/lib/wallet-utils.js @@ -0,0 +1,3 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; diff --git a/packages/wallet-connect/jest.config.ts b/packages/wallet-connect/jest.config.ts index 659db0773..2e23079ab 100644 --- a/packages/wallet-connect/jest.config.ts +++ b/packages/wallet-connect/jest.config.ts @@ -7,7 +7,7 @@ export default { "^.+\\.[tj]s$": [ "ts-jest", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", }, ], }, diff --git a/packages/wallet-connect/package.json b/packages/wallet-connect/package.json index 1fef3775a..954a2e4bd 100644 --- a/packages/wallet-connect/package.json +++ b/packages/wallet-connect/package.json @@ -2,6 +2,37 @@ "name": "@near-wallet-selector/wallet-connect", "version": "8.9.13", "description": "Wallet Connect package for NEAR Wallet Selector.", + "scripts": { + "compile:esm": "tsc -p tsconfig.esm.json", + "compile:cjs": "tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/wallet-connect/src/index.d.ts", + "main": "./dist/cjs/wallet-connect/src/index.js", + "module": "./dist/esm/wallet-connect/src/index.js", + "type": "module", + "dependencies": { + "@walletconnect/modal": "*", + "@walletconnect/sign-client": "*", + "near-api-js": "*" + }, + "devDependencies": { + "@near-js/types": "*", + "@types/node": "*", + "@walletconnect/types": "*", + "rimraf": "*", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/wallet-connect/src/index.js", + "import": "./dist/esm/wallet-connect/src/index.js" + } + }, "keywords": [ "near", "blockchain", @@ -20,8 +51,5 @@ "bugs": { "url": "https://github.com/near/wallet-selector/issues" }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/wallet-connect", - "peerDependencies": { - "near-api-js": "4.0.3" - } + "homepage": "https://github.com/near/wallet-selector/tree/main/packages/wallet-connect" } diff --git a/packages/wallet-connect/project.json b/packages/wallet-connect/project.json deleted file mode 100644 index dc67f04b8..000000000 --- a/packages/wallet-connect/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "wallet-connect", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/wallet-connect/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/wallet-connect", - "tsConfig": "packages/wallet-connect/tsconfig.lib.json", - "project": "packages/wallet-connect/package.json", - "entryFile": "packages/wallet-connect/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/wallet-connect/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/wallet-connect/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/wallet-connect/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/wallet-connect"], - "options": { - "jestConfig": "packages/wallet-connect/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["bridge-wallet"] -} diff --git a/packages/wallet-connect/src/lib/wallet-connect.ts b/packages/wallet-connect/src/lib/wallet-connect.ts index 508649615..377c405ac 100644 --- a/packages/wallet-connect/src/lib/wallet-connect.ts +++ b/packages/wallet-connect/src/lib/wallet-connect.ts @@ -1,6 +1,6 @@ import type { KeyPair, providers } from "near-api-js"; import * as nearAPI from "near-api-js"; -import type { AccessKeyViewRaw } from "near-api-js/lib/providers/provider"; +import type { AccessKeyViewRaw } from "@near-js/types"; import type { SignClientTypes, SessionTypes } from "@walletconnect/types"; import type { WalletModuleFactory, @@ -19,7 +19,7 @@ import { getActiveAccount } from "@near-wallet-selector/core"; import { createAction } from "@near-wallet-selector/wallet-utils"; import WalletConnectClient from "./wallet-connect-client"; -import icon from "./icon"; +import icon from "./icon.js"; export interface WalletConnectParams { projectId: string; diff --git a/packages/wallet-connect/tsconfig.cjs.json b/packages/wallet-connect/tsconfig.cjs.json new file mode 100644 index 000000000..9f12707d4 --- /dev/null +++ b/packages/wallet-connect/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/wallet-connect/tsconfig.esm.json b/packages/wallet-connect/tsconfig.esm.json new file mode 100644 index 000000000..a51c6f15e --- /dev/null +++ b/packages/wallet-connect/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/wallet-connect/tsconfig.json b/packages/wallet-connect/tsconfig.json index a3bd77f18..4d8b27c19 100644 --- a/packages/wallet-connect/tsconfig.json +++ b/packages/wallet-connect/tsconfig.json @@ -1,24 +1,14 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*"] } - ] + }, + "include": ["src/**/*"] } diff --git a/packages/wallet-connect/tsconfig.lib.json b/packages/wallet-connect/tsconfig.lib.json deleted file mode 100644 index e4b5275a2..000000000 --- a/packages/wallet-connect/tsconfig.lib.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": ["node"] - }, - "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": ["jest.config.ts", "**/*.spec.ts"], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] -} diff --git a/packages/wallet-connect/tsconfig.spec.json b/packages/wallet-connect/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/wallet-connect/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/wallet-utils/dist/cjs/core/src/index.d.ts b/packages/wallet-utils/dist/cjs/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/index.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/index.js b/packages/wallet-utils/dist/cjs/core/src/index.js new file mode 100644 index 000000000..cfb828bf8 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = exports.allowOnlyLanguage = exports.translate = exports.serializeNep413 = exports.verifySignature = exports.verifyFullKeyBelongsToUser = exports.isCurrentBrowserSupported = exports.getActiveAccount = exports.waitFor = exports.EventEmitter = exports.setupWalletSelector = void 0; +var wallet_selector_js_1 = require("./lib/wallet-selector.js"); +Object.defineProperty(exports, "setupWalletSelector", { enumerable: true, get: function () { return wallet_selector_js_1.setupWalletSelector; } }); +var services_1 = require("./lib/services"); +Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return services_1.EventEmitter; } }); +var helpers_1 = require("./lib/helpers"); +Object.defineProperty(exports, "waitFor", { enumerable: true, get: function () { return helpers_1.waitFor; } }); +Object.defineProperty(exports, "getActiveAccount", { enumerable: true, get: function () { return helpers_1.getActiveAccount; } }); +Object.defineProperty(exports, "isCurrentBrowserSupported", { enumerable: true, get: function () { return helpers_1.isCurrentBrowserSupported; } }); +Object.defineProperty(exports, "verifyFullKeyBelongsToUser", { enumerable: true, get: function () { return helpers_1.verifyFullKeyBelongsToUser; } }); +Object.defineProperty(exports, "verifySignature", { enumerable: true, get: function () { return helpers_1.verifySignature; } }); +Object.defineProperty(exports, "serializeNep413", { enumerable: true, get: function () { return helpers_1.serializeNep413; } }); +var translate_1 = require("./lib/translate/translate"); +Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_1.translate; } }); +Object.defineProperty(exports, "allowOnlyLanguage", { enumerable: true, get: function () { return translate_1.allowOnlyLanguage; } }); +var testUtils_1 = require("./lib/testUtils"); +Object.defineProperty(exports, "mockWallet", { enumerable: true, get: function () { return testUtils_1.mockWallet; } }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/constants.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/constants.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/constants.js b/packages/wallet-utils/dist/cjs/core/src/lib/constants.js new file mode 100644 index 000000000..50899a58d --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PENDING_SELECTED_WALLET_ID = exports.SELECTED_WALLET_ID = exports.PENDING_CONTRACT = exports.CONTRACT = exports.REMEMBER_RECENT_WALLETS_STATE = exports.REMEMBER_RECENT_WALLETS = exports.RECENTLY_SIGNED_IN_WALLETS = exports.PACKAGE_NAME = void 0; +exports.PACKAGE_NAME = "near-wallet-selector"; +exports.RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +exports.REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +exports.REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +exports.CONTRACT = "contract"; +exports.PENDING_CONTRACT = "contract:pending"; +exports.SELECTED_WALLET_ID = `selectedWalletId`; +exports.PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/detect-browser.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/detect-browser.js b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..a03402ab2 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,74 @@ +"use strict"; +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCurrentBrowserSupported = void 0; +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; +exports.isCurrentBrowserSupported = isCurrentBrowserSupported; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/getActiveAccount.js b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..0da744cc5 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getActiveAccount = void 0; +const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; +exports.getActiveAccount = getActiveAccount; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/index.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/index.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/index.js b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/index.js new file mode 100644 index 000000000..eb80ab43a --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./waitFor"), exports); +__exportStar(require("./getActiveAccount"), exports); +__exportStar(require("./detect-browser"), exports); +__exportStar(require("./verify-signature/verify-signature"), exports); +__exportStar(require("./verify-signature/payload"), exports); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/payload.js b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..5655fd8cd --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeNep413 = exports.payloadSchema = exports.createPayload = void 0; +const borsh_1 = require("borsh"); +const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +exports.createPayload = createPayload; +exports.payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +const serializeNep413 = (signMessageParams) => { + const payload = (0, exports.createPayload)(signMessageParams); + return Buffer.from((0, borsh_1.serialize)(exports.payloadSchema, payload)); +}; +exports.serializeNep413 = serializeNep413; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..5d00297d2 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyFullKeyBelongsToUser = exports.verifySignature = void 0; +const borsh_1 = require("borsh"); +const js_sha256_1 = require("js-sha256"); +const payload_1 = require("./payload"); +const crypto_1 = require("../../../../../../../near-api-js/packages/crypto"); +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +const providers_1 = require("@near-js/providers"); +const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = (0, borsh_1.serialize)(payload_1.payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(js_sha256_1.sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = (0, crypto_1.publicKeyFrom)(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +exports.verifySignature = verifySignature; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new providers_1.JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; +exports.verifyFullKeyBelongsToUser = verifyFullKeyBelongsToUser; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/waitFor.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/helpers/waitFor.js b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..8d37d4cef --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/helpers/waitFor.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.waitFor = void 0; +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; +exports.waitFor = waitFor; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/ar.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/bg.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/en.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/es.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/hi.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/hr.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/ko.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/mk.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/sl.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/sr.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/vi.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/locale/zh.json b/packages/wallet-utils/dist/cjs/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/options.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/options.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/options.js b/packages/wallet-utils/dist/cjs/core/src/lib/options.js new file mode 100644 index 000000000..587fab7eb --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/options.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveOptions = exports.resolveNetwork = exports.getNetworkPreset = void 0; +const services_1 = require("./services"); +const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +exports.getNetworkPreset = getNetworkPreset; +const resolveNetwork = (network) => { + return typeof network === "string" ? (0, exports.getNetworkPreset)(network) : network; +}; +exports.resolveNetwork = resolveNetwork; +const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: (0, exports.resolveNetwork)(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new services_1.WebStorageService(), + }; +}; +exports.resolveOptions = resolveOptions; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/options.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/options.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/options.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/options.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/options.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..1129f4fc6 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventEmitter = void 0; +const events_1 = require("events"); +class EventEmitter { + emitter = new events_1.EventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} +exports.EventEmitter = EventEmitter; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/index.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/index.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/index.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/index.js new file mode 100644 index 000000000..771f7ca4c --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/index.js @@ -0,0 +1,27 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./provider/provider.service"), exports); +__exportStar(require("./provider/provider.service.types"), exports); +__exportStar(require("./storage/storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service.types"), exports); +__exportStar(require("./storage/json-storage.service"), exports); +__exportStar(require("./storage/web-storage.service"), exports); +__exportStar(require("./logger/logger.service"), exports); +__exportStar(require("./logger/logger.service.types"), exports); +__exportStar(require("./wallet-modules/wallet-modules.service"), exports); +__exportStar(require("./event-emitter/event-emitter.service"), exports); +__exportStar(require("./event-emitter/event-emitter.types"), exports); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..f2365f6b4 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = exports.Logger = void 0; +class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +exports.Logger = Logger; +exports.logger = new Logger(); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..7798a5f3f --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Provider = void 0; +const providers_1 = require("@near-js/providers"); +class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new providers_1.FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new providers_1.JsonRpcProvider({ url })) + : []; + } +} +exports.Provider = Provider; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..1d1ed0bf1 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.JsonStorage = void 0; +const KEY_DELIMITER = ":"; +class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} +exports.JsonStorage = JsonStorage; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/storage.service.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/web-storage.service.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..b1b3430c7 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebStorageService = void 0; +class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} +exports.WebStorageService = WebStorageService; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..a27acfb1e --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,325 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WalletModules = void 0; +const event_emitter_service_1 = require("../event-emitter/event-emitter.service"); +const logger_service_1 = require("../logger/logger.service"); +const constants_1 = require("../../constants"); +const json_storage_service_1 = require("../storage/json-storage.service"); +class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger_service_1.logger.log(`Failed to validate ${wallet.id} during setup`); + logger_service_1.logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(constants_1.PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(constants_1.PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(constants_1.PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(constants_1.PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger_service_1.logger.log("Failed to sign out existing wallet"); + logger_service_1.logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(constants_1.RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger_service_1.logger.log(`Failed to sign out ${wallet.id}`); + logger_service_1.logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new json_storage_service_1.JsonStorage(this.storage, constants_1.PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(constants_1.PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(constants_1.PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new event_emitter_service_1.EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new logger_service_1.Logger(module.id), + storage: new json_storage_service_1.JsonStorage(this.storage, [constants_1.PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger_service_1.logger.log("Failed to setup module"); + logger_service_1.logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger_service_1.logger.error("Failed to sign in to wallet. " + err); + } + } + } +} +exports.WalletModules = WalletModules; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/store.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/store.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/store.js b/packages/wallet-utils/dist/cjs/core/src/lib/store.js new file mode 100644 index 000000000..fc078e464 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/store.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createStore = void 0; +const rxjs_1 = require("rxjs"); +const services_1 = require("./services"); +const constants_1 = require("./constants"); +const reducer = (state, action) => { + services_1.logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? constants_1.REMEMBER_RECENT_WALLETS_STATE.DISABLED + : constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === constants_1.REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +const createStore = async (storage) => { + const jsonStorage = new services_1.JsonStorage(storage, constants_1.PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(constants_1.CONTRACT), + selectedWalletId: await jsonStorage.getItem(constants_1.SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(constants_1.RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(constants_1.REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new rxjs_1.BehaviorSubject(initialState); + const actions$ = new rxjs_1.Subject(); + actions$.pipe((0, rxjs_1.scan)(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, constants_1.SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, constants_1.CONTRACT, "contract"); + syncStorage(prevState, state, constants_1.RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, constants_1.REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; +exports.createStore = createStore; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/store.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/store.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/store.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/store.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/store.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/testUtils.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/testUtils.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/testUtils.js b/packages/wallet-utils/dist/cjs/core/src/lib/testUtils.js new file mode 100644 index 000000000..5e0cc0df9 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/testUtils.js @@ -0,0 +1,107 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mockWallet = void 0; +// Remove Jest import +// import * as jest from "jest"; +const jest_mock_extended_1 = require("jest-mock-extended"); +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +const mockWallet = async (factory, deps) => { + const { options, storage } = (0, options_1.resolveOptions)({ + network: (0, options_1.getNetworkPreset)("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const walletModules = new services_1.WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || (0, jest_mock_extended_1.mock)(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +exports.mockWallet = mockWallet; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/translate/translate.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/translate/translate.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/translate/translate.js b/packages/wallet-utils/dist/cjs/core/src/lib/translate/translate.js new file mode 100644 index 000000000..c5573a87c --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/translate/translate.js @@ -0,0 +1,81 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.translate = exports.allowOnlyLanguage = void 0; +const en_json_1 = __importDefault(require("../locale/en.json")); +const es_json_1 = __importDefault(require("../locale/es.json")); +const zh_json_1 = __importDefault(require("../locale/zh.json")); +const bg_json_1 = __importDefault(require("../locale/bg.json")); +const ko_json_1 = __importDefault(require("../locale/ko.json")); +const vi_json_1 = __importDefault(require("../locale/vi.json")); +const hi_json_1 = __importDefault(require("../locale/hi.json")); +const ar_json_1 = __importDefault(require("../locale/ar.json")); +const hr_json_1 = __importDefault(require("../locale/hr.json")); +const mk_json_1 = __importDefault(require("../locale/mk.json")); +const sl_json_1 = __importDefault(require("../locale/sl.json")); +const sr_json_1 = __importDefault(require("../locale/sr.json")); +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en_json_1.default; + case "es": + return es_json_1.default; + case "zh": + return zh_json_1.default; + case "bg": + return bg_json_1.default; + case "ko": + return ko_json_1.default; + case "vi": + return vi_json_1.default; + case "hi": + return hi_json_1.default; + case "ar": + return ar_json_1.default; + case "hr": + return hr_json_1.default; + case "mk": + return mk_json_1.default; + case "sl": + return sl_json_1.default; + case "sr": + return sr_json_1.default; + default: + return en_json_1.default; + } +}; +let chosenLang; +const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +exports.allowOnlyLanguage = allowOnlyLanguage; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; +exports.translate = translate; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/utils.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/utils.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/utils.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/utils.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/utils.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.js b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..8ffb4cc07 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.js @@ -0,0 +1,83 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupWalletSelector = void 0; +const options_1 = require("./options"); +const store_1 = require("./store"); +const services_1 = require("./services"); +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +const setupWalletSelector = async (params) => { + const { options, storage } = (0, options_1.resolveOptions)(params); + services_1.Logger.debug = options.debug; + const emitter = new services_1.EventEmitter(); + const store = await (0, store_1.createStore)(storage); + const network = await (0, options_1.getNetworkPreset)(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new services_1.WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new services_1.Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; +exports.setupWalletSelector = setupWalletSelector; diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet-selector.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet/index.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet/index.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet/index.js b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/index.js new file mode 100644 index 000000000..d7ee97f6b --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./wallet.types"), exports); +__exportStar(require("./transactions.types"), exports); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet/transactions.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet/transactions.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/transactions.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet/wallet.types.d.ts b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/core/src/lib/wallet/wallet.types.js b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/core/src/lib/wallet/wallet.types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/index.d.ts b/packages/wallet-utils/dist/cjs/wallet-utils/src/index.d.ts new file mode 100644 index 000000000..9b70859cc --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/index.d.ts @@ -0,0 +1,2 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/index.d.ts.map b/packages/wallet-utils/dist/cjs/wallet-utils/src/index.d.ts.map new file mode 100644 index 000000000..0f953dcab --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/index.js b/packages/wallet-utils/dist/cjs/wallet-utils/src/index.js new file mode 100644 index 000000000..309bdb658 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = exports.createAction = void 0; +var wallet_utils_1 = require("./lib/wallet-utils"); +Object.defineProperty(exports, "createAction", { enumerable: true, get: function () { return wallet_utils_1.createAction; } }); +Object.defineProperty(exports, "signTransactions", { enumerable: true, get: function () { return wallet_utils_1.signTransactions; } }); diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/create-action.d.ts b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/create-action.d.ts new file mode 100644 index 000000000..da65b4629 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/create-action.d.ts @@ -0,0 +1,4 @@ +import * as nearAPI from "near-api-js"; +import type { Action } from "@near-wallet-selector/core"; +export declare const createAction: (action: Action) => nearAPI.transactions.Action; +//# sourceMappingURL=create-action.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map new file mode 100644 index 000000000..7a0b17623 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/create-action.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"create-action.d.ts","sourceRoot":"","sources":["../../../../../src/lib/create-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgB3E,eAAO,MAAM,YAAY,WAAY,MAAM,gCAqD1C,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/create-action.js b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/create-action.js new file mode 100644 index 000000000..b4a01ef64 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/create-action.js @@ -0,0 +1,78 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createAction = void 0; +const nearAPI = __importStar(require("near-api-js")); +const { transactions, utils } = nearAPI; +const getAccessKey = (permission) => { + if (permission === "FullAccess") { + return transactions.fullAccessKey(); + } + const { receiverId, methodNames = [] } = permission; + const allowance = permission.allowance + ? BigInt(permission.allowance) + : undefined; + return transactions.functionCallAccessKey(receiverId, methodNames, allowance); +}; +const createAction = (action) => { + switch (action.type) { + case "CreateAccount": + return transactions.createAccount(); + case "DeployContract": { + const { code } = action.params; + return transactions.deployContract(code); + } + case "FunctionCall": { + const { methodName, args, gas, deposit } = action.params; + console.log('alohaws action', action); + return transactions.functionCall(methodName, args, BigInt(gas), BigInt(deposit)); + } + case "Transfer": { + const { deposit } = action.params; + return transactions.transfer(BigInt(deposit)); + } + case "Stake": { + const { stake, publicKey } = action.params; + return transactions.stake(BigInt(stake), utils.PublicKey.from(publicKey)); + } + case "AddKey": { + const { publicKey, accessKey } = action.params; + return transactions.addKey(utils.PublicKey.from(publicKey), + // TODO: Use accessKey.nonce? near-api-js seems to think 0 is fine? + getAccessKey(accessKey.permission)); + } + case "DeleteKey": { + const { publicKey } = action.params; + return transactions.deleteKey(utils.PublicKey.from(publicKey)); + } + case "DeleteAccount": { + const { beneficiaryId } = action.params; + return transactions.deleteAccount(beneficiaryId); + } + default: + throw new Error("Invalid action type"); + } +}; +exports.createAction = createAction; diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts new file mode 100644 index 000000000..fd0b85445 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts @@ -0,0 +1,5 @@ +import type { Signer } from "@near-js/signers"; +import type { SignedTransaction } from "@near-js/transactions"; +import type { Network, Transaction } from "@near-wallet-selector/core/src"; +export declare const signTransactions: (transactions: Array, signer: Signer, network: Network) => Promise; +//# sourceMappingURL=sign-transactions.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map new file mode 100644 index 000000000..bdd8c1195 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/sign-transactions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sign-transactions.d.ts","sourceRoot":"","sources":["../../../../../src/lib/sign-transactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAIzE,eAAO,MAAM,gBAAgB,iBACb,KAAK,CAAC,WAAW,CAAC,UACxB,MAAM,WACL,OAAO,iCAoDjB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/sign-transactions.js b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/sign-transactions.js new file mode 100644 index 000000000..c8c3b6519 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/sign-transactions.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = void 0; +const crypto_1 = require("@near-js/crypto"); +const transactions_1 = require("@near-js/transactions"); +const utils_1 = require("@near-js/utils"); +// import * as nearAPI from "near-api-js"; +const providers_1 = require("@near-js/providers"); +const create_action_1 = require("./create-action"); +const signTransactions = async (transactions, signer, network) => { + const provider = new providers_1.JsonRpcProvider({ + url: network.nodeUrl, + }); + const signedTransactions = []; + for (let i = 0; i < transactions.length; i++) { + const publicKey = await signer.getPublicKey(transactions[i].signerId, network.networkId); + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transactions[i].signerId, + public_key: publicKey.toString(), + }), + ]); + const actions = transactions[i].actions.map((action) => (0, create_action_1.createAction)(action)); + const transaction = (0, transactions_1.createTransaction)(transactions[i].signerId, new crypto_1.PublicKey({ + keyType: crypto_1.KeyType.ED25519, + data: publicKey.data + }), + // PublicKey.from(publicKey.toString()), + transactions[i].receiverId, accessKey.nonce + i + 1, actions, (0, utils_1.baseDecode)(block.header.hash)); + const response = await (0, transactions_1.signTransaction)(transaction, signer, transactions[i].signerId, network.networkId); + signedTransactions.push(response[1]); + } + return signedTransactions; +}; +exports.signTransactions = signTransactions; diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts new file mode 100644 index 000000000..ca97d2268 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts @@ -0,0 +1,4 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; +//# sourceMappingURL=wallet-utils.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map new file mode 100644 index 000000000..ffc675757 --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/wallet-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../../../../src/lib/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/wallet-utils.js b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/wallet-utils.js new file mode 100644 index 000000000..1d0db17bd --- /dev/null +++ b/packages/wallet-utils/dist/cjs/wallet-utils/src/lib/wallet-utils.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signTransactions = exports.createAction = void 0; +const create_action_1 = require("./create-action"); +Object.defineProperty(exports, "createAction", { enumerable: true, get: function () { return create_action_1.createAction; } }); +const sign_transactions_1 = require("./sign-transactions"); +Object.defineProperty(exports, "signTransactions", { enumerable: true, get: function () { return sign_transactions_1.signTransactions; } }); diff --git a/packages/wallet-utils/dist/esm/core/src/index.d.ts b/packages/wallet-utils/dist/esm/core/src/index.d.ts new file mode 100644 index 000000000..18e086590 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/index.d.ts @@ -0,0 +1,13 @@ +export type { WalletSelector, WalletSelectorParams, WalletSelectorEvents, WalletSelectorStore, } from "./lib/wallet-selector.types"; +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export type { Network, NetworkId } from "./lib/options.types"; +export type { Subscription, StorageService, JsonStorageService, EventEmitterService, } from "./lib/services"; +export { EventEmitter } from "./lib/services"; +export type { Optional } from "./lib/utils.types"; +export type { WalletSelectorState, ContractState, ModuleState, AccountState, } from "./lib/store.types"; +export type { WalletModuleFactory, WalletModule, WalletBehaviourFactory, WalletBehaviourOptions, Wallet, WalletType, WalletMetadata, WalletEvents, SignInParams, BrowserWalletMetadata, BrowserWalletBehaviour, BrowserWallet, InjectedWalletMetadata, InjectedWalletBehaviour, InjectedWallet, InstantLinkWalletMetadata, InstantLinkWalletBehaviour, InstantLinkWallet, HardwareWalletMetadata, HardwareWalletSignInParams, HardwareWalletBehaviour, HardwareWallet, HardwareWalletAccount, BridgeWalletMetadata, BridgeWalletBehaviour, BridgeWallet, VerifiedOwner, VerifyOwnerParams, Account, Transaction, Action, ActionType, CreateAccountAction, DeployContractAction, FunctionCallAction, TransferAction, StakeAction, AddKeyAction, DeleteKeyAction, DeleteAccountAction, AddKeyPermission, AccountImportData, SignedMessage, SignMessageParams, } from "./lib/wallet"; +export type { FinalExecutionOutcome } from "@near-js/types"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/index.d.ts.map b/packages/wallet-utils/dist/esm/core/src/index.d.ts.map new file mode 100644 index 000000000..f98229043 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/index.js b/packages/wallet-utils/dist/esm/core/src/index.js new file mode 100644 index 000000000..a545ffa59 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/index.js @@ -0,0 +1,5 @@ +export { setupWalletSelector } from "./lib/wallet-selector.js"; +export { EventEmitter } from "./lib/services"; +export { waitFor, getActiveAccount, isCurrentBrowserSupported, verifyFullKeyBelongsToUser, verifySignature, serializeNep413, } from "./lib/helpers"; +export { translate, allowOnlyLanguage } from "./lib/translate/translate"; +export { mockWallet } from './lib/testUtils'; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/constants.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/constants.d.ts new file mode 100644 index 000000000..ea8f9e98c --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/constants.d.ts @@ -0,0 +1,12 @@ +export declare const PACKAGE_NAME = "near-wallet-selector"; +export declare const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export declare const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export declare const REMEMBER_RECENT_WALLETS_STATE: { + ENABLED: string; + DISABLED: string; +}; +export declare const CONTRACT = "contract"; +export declare const PENDING_CONTRACT = "contract:pending"; +export declare const SELECTED_WALLET_ID = "selectedWalletId"; +export declare const PENDING_SELECTED_WALLET_ID = "selectedWalletId:pending"; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/constants.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/constants.d.ts.map new file mode 100644 index 000000000..30185737c --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,6BAA6B;;;CAGzC,CAAC;AAEF,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/constants.js b/packages/wallet-utils/dist/esm/core/src/lib/constants.js new file mode 100644 index 000000000..a75f1a50e --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/constants.js @@ -0,0 +1,11 @@ +export const PACKAGE_NAME = "near-wallet-selector"; +export const RECENTLY_SIGNED_IN_WALLETS = "recentlySignedInWallets"; +export const REMEMBER_RECENT_WALLETS = "rememberRecentWallets"; +export const REMEMBER_RECENT_WALLETS_STATE = { + ENABLED: "enabled", + DISABLED: "disabled", +}; +export const CONTRACT = "contract"; +export const PENDING_CONTRACT = "contract:pending"; +export const SELECTED_WALLET_ID = `selectedWalletId`; +export const PENDING_SELECTED_WALLET_ID = `selectedWalletId:pending`; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/detect-browser.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/helpers/detect-browser.d.ts new file mode 100644 index 000000000..6c6f4c418 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/detect-browser.d.ts @@ -0,0 +1,3 @@ +export type Browser = "aol" | "edge" | "edge-ios" | "yandexbrowser" | "kakaotalk" | "samsung" | "silk" | "miui" | "beaker" | "edge-chromium" | "chrome" | "chromium-webview" | "phantomjs" | "crios" | "firefox" | "fxios" | "opera-mini" | "opera" | "pie" | "netfront" | "ie" | "bb10" | "android" | "ios" | "safari" | "facebook" | "instagram" | "ios-webview" | "curl" | "searchbot"; +export declare const isCurrentBrowserSupported: (supportedBrowser: Array) => boolean; +//# sourceMappingURL=detect-browser.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map new file mode 100644 index 000000000..656e85614 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/detect-browser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"detect-browser.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/detect-browser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,UAAU,GACV,eAAe,GACf,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,OAAO,GACP,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,WAAW,CAAC;AAoEhB,eAAO,MAAM,yBAAyB,qBAClB,KAAK,CAAC,OAAO,CAAC,KAC/B,OAeF,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/detect-browser.js b/packages/wallet-utils/dist/esm/core/src/lib/helpers/detect-browser.js new file mode 100644 index 000000000..c4e583914 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/detect-browser.js @@ -0,0 +1,70 @@ +/* eslint-disable no-useless-escape */ +// https://github.com/DamonOehlman/detect-browser/blob/master/src/index.ts +const SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/; +const userAgentRules = [ + ["aol", /AOLShield\/([0-9\._]+)/], + ["edge", /Edge\/([0-9\._]+)/], + ["edge-ios", /EdgiOS\/([0-9\._]+)/], + ["yandexbrowser", /YaBrowser\/([0-9\._]+)/], + ["kakaotalk", /KAKAOTALK\s([0-9\.]+)/], + ["samsung", /SamsungBrowser\/([0-9\.]+)/], + ["silk", /\bSilk\/([0-9._-]+)\b/], + ["miui", /MiuiBrowser\/([0-9\.]+)$/], + ["beaker", /BeakerBrowser\/([0-9\.]+)/], + ["edge-chromium", /EdgA?\/([0-9\.]+)/], + [ + "chromium-webview", + /(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/, + ], + ["chrome", /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/], + ["phantomjs", /PhantomJS\/([0-9\.]+)(:?\s|$)/], + ["crios", /CriOS\/([0-9\.]+)(:?\s|$)/], + ["firefox", /Firefox\/([0-9\.]+)(?:\s|$)/], + ["fxios", /FxiOS\/([0-9\.]+)/], + ["opera-mini", /Opera Mini.*Version\/([0-9\.]+)/], + ["opera", /Opera\/([0-9\.]+)(?:\s|$)/], + ["opera", /OPR\/([0-9\.]+)(:?\s|$)/], + ["pie", /^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/], + [ + "pie", + /^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/, + ], + ["netfront", /^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/], + ["ie", /Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/], + ["ie", /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/], + ["ie", /MSIE\s(7\.0)/], + ["bb10", /BB10;\sTouch.*Version\/([0-9\.]+)/], + ["android", /Android\s([0-9\.]+)/], + ["ios", /Version\/([0-9\._]+).*Mobile.*Safari.*/], + ["safari", /Version\/([0-9\._]+).*Safari/], + ["facebook", /FB[AS]V\/([0-9\.]+)/], + ["instagram", /Instagram\s([0-9\.]+)/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Mobile/], + ["ios-webview", /AppleWebKit\/([0-9\.]+).*Gecko\)$/], + ["curl", /^curl\/([0-9\.]+)$/], + ["searchbot", SEARCHBOX_UA_REGEX], +]; +const matchUserAgent = (ua) => { + return (ua !== "" && + userAgentRules.reduce((matched, [browser, regex]) => { + if (matched) { + return matched; + } + const uaMatch = regex.exec(ua); + return !!uaMatch && [browser, uaMatch]; + }, false)); +}; +export const isCurrentBrowserSupported = (supportedBrowser) => { + if (typeof navigator === "undefined") { + return false; + } + const matchedRule = matchUserAgent(navigator.userAgent); + if (!matchedRule) { + return false; + } + const [name] = matchedRule; + if (name === "searchbot") { + return false; + } + return !!supportedBrowser.find((item) => item === name); +}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts new file mode 100644 index 000000000..6741ffe8c --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts @@ -0,0 +1,3 @@ +import type { AccountState, WalletSelectorState } from "../store.types"; +export declare const getActiveAccount: (state: WalletSelectorState) => AccountState | null; +//# sourceMappingURL=getActiveAccount.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map new file mode 100644 index 000000000..69c3c7609 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/getActiveAccount.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"getActiveAccount.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/getActiveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,eAAO,MAAM,gBAAgB,UACpB,mBAAmB,KACzB,YAAY,GAAG,IAEjB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/getActiveAccount.js b/packages/wallet-utils/dist/esm/core/src/lib/helpers/getActiveAccount.js new file mode 100644 index 000000000..b2db314cb --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/getActiveAccount.js @@ -0,0 +1,3 @@ +export const getActiveAccount = (state) => { + return state.accounts.find((account) => account.active) || null; +}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/index.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/helpers/index.d.ts new file mode 100644 index 000000000..78cea0fee --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/index.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/helpers/index.d.ts.map new file mode 100644 index 000000000..e1ce0874b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/index.js b/packages/wallet-utils/dist/esm/core/src/lib/helpers/index.js new file mode 100644 index 000000000..69aaf908c --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/index.js @@ -0,0 +1,5 @@ +export * from "./waitFor"; +export * from "./getActiveAccount"; +export * from "./detect-browser"; +export * from "./verify-signature/verify-signature"; +export * from "./verify-signature/payload"; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts new file mode 100644 index 000000000..207d814af --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts @@ -0,0 +1,13 @@ +import { Schema } from "borsh"; +import type { SignMessageParams } from "../../wallet"; +export interface Payload { + message: string; + nonce: Buffer; + recipient: string; + tag?: number; + callbackUrl?: string; +} +export declare const createPayload: (data: SignMessageParams) => Payload; +export declare const payloadSchema: Schema; +export declare const serializeNep413: (signMessageParams: SignMessageParams) => Buffer; +//# sourceMappingURL=payload.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map new file mode 100644 index 000000000..43755b9b9 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/payload.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAY,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,SAAU,iBAAiB,KAAG,OAUvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAaF,eAAO,MAAM,eAAe,sBAAuB,iBAAiB,KAAG,MAGtE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/payload.js b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/payload.js new file mode 100644 index 000000000..f2a7f147e --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/payload.js @@ -0,0 +1,97 @@ +import { serialize } from "borsh"; +export const createPayload = (data) => { + return { + message: data.message, + nonce: data.nonce, + recipient: data.recipient, + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + tag: 2147484061, // NEP413 tag + callbackUrl: data.callbackUrl || undefined, + }; +}; +export const payloadSchema = { + struct: { + tag: "u32", + message: "string", + nonce: { + array: { + type: "u8", + len: 32 + } + }, // Assuming this is a 32-byte buffer + recipient: "string", + callbackUrl: { + option: "string" + }, + } +}; +// const payloadSchema: Schema = { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], // Assuming this is a 32-byte buffer +// ["recipient", "string"], +// ["callbackUrl", { kind: "option", type: "string" }], +// ], +// }; +export const serializeNep413 = (signMessageParams) => { + const payload = createPayload(signMessageParams); + return Buffer.from(serialize(payloadSchema, payload)); +}; +// export const serializeNep413 = (signMessageParams: SignMessageParams): Buffer => { +// const payload = createPayload(signMessageParams); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; +// import type { SignMessageParams } from "../../wallet"; +// import { serialize } from "borsh"; +// +// export class Payload { +// tag: number; +// message: string; +// nonce: Buffer; +// recipient: string; +// callbackUrl?: string; +// +// constructor(data: SignMessageParams) { +// // The tag's value is a hardcoded value as per +// // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) +// this.tag = 2147484061; +// this.message = data.message; +// this.nonce = data.nonce; +// this.recipient = data.recipient; +// if (data.callbackUrl) { +// this.callbackUrl = data.callbackUrl; +// } +// } +// } +// +// export const payloadSchema = new Map([ +// [ +// Payload, +// { +// kind: "struct", +// fields: [ +// ["tag", "u32"], +// ["message", "string"], +// ["nonce", [32]], +// ["recipient", "string"], +// [ +// "callbackUrl", +// { +// kind: "option", +// type: "string", +// }, +// ], +// ], +// }, +// ], +// ]); +// +// export const serializeNep413 = ( +// signMessageParams: SignMessageParams +// ): Buffer => { +// const payload = new Payload({ ...signMessageParams }); +// return Buffer.from(serialize(payloadSchema, payload)); +// }; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts new file mode 100644 index 000000000..45cd3629b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts @@ -0,0 +1,4 @@ +import type { VerifyFullKeyBelongsToUserParams, VerifySignatureParams } from "./verify-signature.types"; +export declare const verifySignature: ({ publicKey, signature, message, nonce, recipient, callbackUrl, }: VerifySignatureParams) => boolean; +export declare const verifyFullKeyBelongsToUser: ({ publicKey, accountId, network, }: VerifyFullKeyBelongsToUserParams) => Promise; +//# sourceMappingURL=verify-signature.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map new file mode 100644 index 000000000..6e0eeae8d --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,eAAe,sEAOzB,qBAAqB,YAkBvB,CAAC;AAiBF,eAAO,MAAM,0BAA0B,uCAIpC,gCAAgC,qBAQlC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js new file mode 100644 index 000000000..f08e83f02 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.js @@ -0,0 +1,39 @@ +import { serialize } from "borsh"; +import { sha256 } from "js-sha256"; +import { payloadSchema } from "./payload"; +import { publicKeyFrom } from "../../../../../../../near-api-js/packages/crypto"; +// import {KeyType, PublicKey, publicKeyFrom} from "@near-js/crypto"; +import { JsonRpcProvider } from "@near-js/providers"; +export const verifySignature = ({ publicKey, signature, message, nonce, recipient, callbackUrl, }) => { + // Reconstruct the payload that was **actually signed** + const payload = { message, nonce, recipient, callbackUrl }; + // Serialize payload based on payloadSchema + const borshPayload = serialize(payloadSchema, payload); + // Hash the payload as in the NEP0413 referenced example + // https://github.com/near/NEPs/blob/master/neps/nep-0413.md#references + // https://github.com/gagdiez/near-login/blob/main/authenticate/wallet-authenticate.js#L21 + const hashedPayload = Uint8Array.from(sha256.array(borshPayload)); + // Convert real signature to buffer base64 + const realSignature = Buffer.from(signature, "base64"); + const pk = publicKeyFrom(publicKey); + // Verify the signature + return pk.verify(hashedPayload, realSignature); +}; +const fetchAllUserKeys = async ({ accountId, network, publicKey, }) => { + const provider = new JsonRpcProvider({ url: network.nodeUrl }); + const key = await provider.query({ + request_type: "view_access_key", + account_id: accountId, + finality: "final", + public_key: publicKey, + }); + return key; +}; +export const verifyFullKeyBelongsToUser = async ({ publicKey, accountId, network, }) => { + const { permission } = await fetchAllUserKeys({ + accountId, + network, + publicKey, + }); + return permission === "FullAccess"; +}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts new file mode 100644 index 000000000..50312b798 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts @@ -0,0 +1,25 @@ +import type { Network } from "../../options.types"; +import { KeyType } from "@near-js/crypto"; +export interface IPublicKey { + keyType: KeyType; + data: Uint8Array; +} +export interface VerifySignatureParams { + publicKey: IPublicKey; + signature: string; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; +} +export interface VerifyFullKeyBelongsToUserParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +export interface ViewAccessKeyParams { + publicKey: IPublicKey; + accountId: string; + network: Network; +} +//# sourceMappingURL=verify-signature.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map new file mode 100644 index 000000000..ad3eabbdf --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-signature.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/helpers/verify-signature/verify-signature.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/verify-signature/verify-signature.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/waitFor.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/helpers/waitFor.d.ts new file mode 100644 index 000000000..c73405a42 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/waitFor.d.ts @@ -0,0 +1,5 @@ +export declare const waitFor: (cb: () => boolean, opts?: { + timeout?: number; + interval?: number; +}) => Promise; +//# sourceMappingURL=waitFor.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/waitFor.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/helpers/waitFor.d.ts.map new file mode 100644 index 000000000..01d36b6d7 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/waitFor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/helpers/waitFor.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,OAAO,OACd,MAAM,OAAO,SACX;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,qBAU9C,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/helpers/waitFor.js b/packages/wallet-utils/dist/esm/core/src/lib/helpers/waitFor.js new file mode 100644 index 000000000..55fc5398f --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/helpers/waitFor.js @@ -0,0 +1,22 @@ +const wait = (ms) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; +const poll = async (cb, interval, remaining) => { + const result = cb(); + if (result) { + return result; + } + if (!remaining) { + throw new Error("Exceeded timeout"); + } + return wait(interval).then(() => poll(cb, interval, remaining - 1)); +}; +export const waitFor = async (cb, opts = {}) => { + const { timeout = 100, interval = 50 } = opts; + return Promise.race([ + wait(timeout).then(() => { + throw new Error("Exceeded timeout"); + }), + poll(cb, interval, Math.floor(timeout / interval)), + ]); +}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/ar.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/ar.json new file mode 100644 index 000000000..ebe6801b2 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/ar.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "صل محفظتك", + "whatIsAWallet": "ما هي المحفظة؟", + "secureAndManage": "تأمين وإدارة الممتلكات الرقمية الخاصة بك", + "safelyStore": "قم بتخزين و ارسال عملاتك و أصولك الرقمية بأمان", + "logInToAny": "سجل الدخول إلى أي تطبيق يستخدم نير", + "noNeedToCreate": ".لا داعي لإنشاء حساب جديد. فقط قم بتوصيل محفظتك وانطلق", + "getAWallet": "احصل على محفظة", + "useAWallet": "استخدم محفظة لتأمين وإدارة أصول نير الخاصة بك، وادخل لأي تطبيق يستخدم نير دون الحاجة إلى اسم المستخدم وكلمةالمرور", + "connectionFailed": "اتصال فاشل", + "connectionSuccessful": "اتصال ناجح", + "rememberWallet": "تذكر المحافظ", + "connected": "متصل", + "connectingTo": "جاري الاتصال ب", + "connectingMessage": { + "injected": "وافق على الاتصال في نافذة الإضافة", + "browser": "وافق على الاتصال في المحفظة بعد إعادة توجيه", + "hardware": "وافق على الاتصال في جهاز ليدجر", + "bridge": "وافق على الاتصال في المحفظة" + } + }, + "ledger": { + "connectWithLedger": "اتصل مع ليدجر", + "makeSureYourLedger": "تأكد أن ليدجر متصل بأمان, و أن تطبيق نير مفتوح في جهازك", + "continue": "تابع", + "specifyHDPath": "حدد مسار الحساب", + "enterYourPreferredHDPath": "أدخل مسار الحساب المفضل، ثم ابحث عن كل الحسابات النشطة", + "scan": "مسح", + "retry": "أعد المحاولة", + "ledgerIsNotAvailable": "ليدجر غير متوفر", + "accessDeniedToUseLedgerDevice": "تم رفض الاتصال بليدجر", + "noAccountsFound": "لم يتم العثور على أي حسابات", + "selectYourAccounts": "حدد حساباتك", + "connecting1Account": "جاري الاتصال بحساب واحد", + "cantFindAnyAccount": "لا يمكن العثور على أي حساب مرتبط بهذا ليدجر الرجاء إنشاء حساب نير جديد على", + "orConnectAnAnotherLedger": "او اربط جهاز ليدجر آخر", + "connecting": "جاري الاتصال", + "ofAccounts": "من الحسابات", + "failedToAutomatically": "فشل في الاتصال بالحساب تلقائيا. يرجى الاتصال بالحساب يدويا", + "overviewTheListOfAuthorized": "لائحة الحسابات المصرح بها, أكمل تسجيل الدخول بالنقر على الزر أدناه", + "finish": "إنهاء" + }, + "install": { + "youllNeedToInstall": "ستحتاج لتثبيت", + "toContinueAfterInstalling": "للاستكمال. بعد التثبيت", + "refreshThePage": "قم بتحديث الصفحة", + "open": "افتح" + }, + "qr": { + "copiedToClipboard": "تم النسخ", + "failedToCopy": "فشل النسخ", + "scanWithYourMobile": "امسح بجهازك المحمول", + "copyToClipboard": "نسخ", + "preferTheOfficial": "تفضل الحوار الرسمي ل", + "open": "فتح" + }, + "walletTypes": { + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/bg.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/bg.json new file mode 100644 index 000000000..5fd192bad --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/bg.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Свържете вашия Портфейл", + "whatIsAWallet": "Какво е Портфейл?", + "secureAndManage": "Защитете и управлявайте дигиталните си активи", + "safelyStore": "Съхранявайте и прехвърляйте безопасно вашите крипто и NFT.", + "logInToAny": "Използвайте всяко приложение на NEAR", + "noNeedToCreate": "Няма нужда да създавате нови профили. Свържете портфейла си и сте готови!", + "getAWallet": "Създайте Портфейл", + "useAWallet": "Използвайте портфейла, за да защитите и управлявате активите си на NEAR както и да използвате всяко приложение на NEAR без нужда от потребителски имена и пароли.", + "connectionFailed": "Свързването неуспешно", + "connectionSuccessful": "Свързването успешно", + "rememberWallet": "Запази портфейлите", + "connected": "Свързан", + "connectingTo": "Свързване към", + "connectingMessage": { + "injected": "Потвърдете свързването в прозореца на разширението", + "browser": "Потвърдете свързването в портфейла след пренасочването", + "hardware": "Потвърдете свързването в хардуерния портфейл", + "bridge": "Потвърдете връзката в портфейла" + } + }, + "ledger": { + "connectWithLedger": "Свържете се с Ledger", + "makeSureYourLedger": "Уверете се, че вашият Ledger е свързан и че приложението NEAR е отворено нa него.", + "continue": "Продължете", + "specifyHDPath": "Посочете HD път", + "enterYourPreferredHDPath": "Въведете предпочитания HD път, след което сканирайте за активни акаунти.", + "scan": "Сканирайте", + "retry": "Опитайте отново", + "ledgerIsNotAvailable": "Ledger устройството не е достъпно", + "accessDeniedToUseLedgerDevice": "Достъпът за използване на Ledger е отказан", + "noAccountsFound": "Няма намерени профили", + "selectYourAccounts": "Изберете вашите профили", + "connecting1Account": "Свързване на 1 профил", + "cantFindAnyAccount": "Няма намерени профили, съврзани с този Ledger. Моля, създайте нов NEAR профил на", + "orConnectAnAnotherLedger": "или свържете друг Ledger.", + "connecting": "Свързване", + "ofAccounts": "от профили", + "failedToAutomatically": "Автоматичното намиране на профила не бе успешно. Въведете го ръчно:", + "overviewTheListOfAuthorized": "Прегледайте списъка с упълномощени профили, завършете влизането, като щракнете върху бутона по-долу..", + "finish": "Завършете" + }, + "install": { + "youllNeedToInstall": "Ще трябва да инсталирате", + "toContinueAfterInstalling": "за да продължите. След инсталиране", + "refreshThePage": "презаредете страницата.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано в клипборда", + "failedToCopy": "Неуспешно копиране в клипборда", + "scanWithYourMobile": " Сканирайте с мобилното си устройство", + "copyToClipboard": " Копирайте в клипборда", + "preferTheOfficial": "Предпочитан език за кореспонденция", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/en.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/en.json new file mode 100644 index 000000000..ec6ae2981 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/en.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Connect Your Wallet", + "whatIsAWallet": "What is a Wallet?", + "secureAndManage": "Secure & Manage Your Digital Assets", + "safelyStore": "Safely store and transfer your crypto and NFTs.", + "logInToAny": "Log In to Any NEAR App", + "noNeedToCreate": "No need to create new accounts or credentials. Connect your wallet and you are good to go!", + "getAWallet": "Get a Wallet", + "useAWallet": "Use a wallet to secure and manage your NEAR assets, and to log in to any NEAR app without the need for usernames and passwords.", + "connectionFailed": "Connection Failed", + "connectionSuccessful": "Connection Successful", + "rememberWallet": "Remember wallets", + "connected": "Connected", + "connectingTo": "Connecting to", + "connectingMessage": { + "injected": "Confirm the connection in the extension window", + "browser": "Confirm the connection in the wallet after redirect", + "hardware": "Confirm the connection in the ledger device", + "bridge": "Confirm the connection in the wallet" + } + }, + "ledger": { + "connectWithLedger": "Connect with Ledger", + "makeSureYourLedger": "Make sure your Ledger is connected securely, and that the NEAR app is open on your device", + "continue": "Continue", + "specifyHDPath": "Specify HD Path", + "enterYourPreferredHDPath": "Enter your preferred HD path, then scan for any active accounts.", + "scan": "Scan", + "retry": "Retry", + "ledgerIsNotAvailable": "Ledger is not available", + "accessDeniedToUseLedgerDevice": "Access denied to use Ledger device", + "noAccountsFound": "No Accounts Found", + "selectYourAccounts": "Select Your Accounts", + "connecting1Account": "Connecting 1 Account", + "cantFindAnyAccount": "Can't find any account associated with this Ledger. Please create a new NEAR account on", + "orConnectAnAnotherLedger": "or connect an another Ledger.", + "connecting": "Connecting", + "ofAccounts": "of Accounts", + "failedToAutomatically": "Failed to automatically find account id. Provide it manually:", + "overviewTheListOfAuthorized": "Overview the list of authorized account(s), complete sign in by clicking the button below.", + "finish": "Finish" + }, + "install": { + "youllNeedToInstall": "You'll need to install", + "toContinueAfterInstalling": "to continue. After installing", + "refreshThePage": "refresh the page.", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "Copied to clipboard", + "failedToCopy": "Failed to copy to clipboard", + "scanWithYourMobile": "Scan with Your Mobile Device", + "copyToClipboard": " Copy to clipboard", + "preferTheOfficial": "Prefer the official dialogue of", + "open": "Open" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Choose a Wallet", + "transferYourAccounts": "Transfer Your Accounts", + "selectAWallet": "Select a wallet that fits your needs and supports your connected accounts.", + "selectYourAccounts": "Select Your Accounts", + "afterDecide": "After you decide on a wallet, you can select which accounts you want to transfer.", + "disclaimer": "You won’t be able to transfer accounts that have never been funded or used on NEAR.", + "warning": "does not support account export at this time. Please select another wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Select Accounts to Transfer", + "button": "Continue", + "deselectAll": "Deselect All", + "selectAll": "Select All", + "unavailable": "Transfer Unavailable", + "error": "Account does not exist", + "warningLedger": "Ledger support required", + "noBalance": "Account not funded" + }, + "getPassphrase": { + "title": "Copy Temporary Password", + "desc": "You’ll need to enter this password when you begin exporting your accounts to a different wallet.", + "button": "Continue", + "transferButton": "Transfer Accounts", + "label": "Click to Copy", + "checkLabel": "I copied or wrote down the password" + }, + "complete": { + "title": "Complete the Transfer", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Once import part of process is completed from selected wallet, press button to complete the transfer process.", + "startOverButton": "Start Over", + "button": "Complete" + } + } + }, + "component": { + "clickToCopy": { + "label": "Copied", + "tooltip": "Click to copy" + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/es.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/es.json new file mode 100644 index 000000000..34f9ef864 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/es.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Conecta Tu Billetera", + "whatIsAWallet": "¿Que es una Billetera?", + "secureAndManage": "Resguarda y Administrar Tus Activos Digitales", + "safelyStore": "Almacena de forma segura y transfiere tus cryptos y NFT's", + "logInToAny": "Inicie sesión en Cualquier Aplicacion NEAR", + "noNeedToCreate": "No es necesario crear nuevas cuentas o credenciales, ¡Conecta tu billetera y listo!", + "getAWallet": "Obten una Billetera", + "useAWallet": "Usa tu Billetera para resguardar y administrar tus activos en NEAR, e Iniciar sesión en cualquier aplicacion NEAR sin la necesidad de nombres de usuarios y contraseñas", + "connectionFailed": "Conexión Fallida", + "connectionSuccessful": "Conexión Existosa", + "rememberWallet": "Recordar las carteras", + "connected": "Conectado", + "connectingTo": "Conectando a ", + "connectingMessage": { + "injected": "Confirme la conexión en la ventana de extensión", + "browser": "Confirme la conexión en la billetera después de la redirección", + "hardware": "Confirme la conexión en el dispositivo de libro mayor", + "bridge": "Confirmar la conexión en la billetera" + } + }, + "ledger": { + "connectWithLedger": "Conectar con Ledger", + "makeSureYourLedger": "Asegúrese de que su ledger está conectada de forma segura y que la aplicacion NEAR esté abierta en su dispositivo", + "continue": "Continuar", + "specifyHDPath": "Especifique la ruta HD", + "enterYourPreferredHDPath": "Ingrese su ruta HD prerida,y luego busque cualquier cuenta activa.", + "scan": "Escanear", + "retry": "Reintentar", + "ledgerIsNotAvailable": "El Ledger no está disponible", + "accessDeniedToUseLedgerDevice": "Acceso denegado para usar el dispositivo ledger", + "noAccountsFound": "No se encontraron cuentas", + "selectYourAccounts": "Selecciona tus cuentas", + "connecting1Account": "Conectando a 1 cuenta", + "cantFindAnyAccount": "No se pudo encontrar ninguna cuenta asociada con este ledger,Por favor crea una nueva cuenta en NEAR", + "orConnectAnAnotherLedger": "o conecta otro ledger", + "connecting": "Conectando", + "ofAccounts": "de Cuentas", + "failedToAutomatically": "No se pudo encontrar automaticamente el id de la cuenta,Ingresalo manualmente:", + "overviewTheListOfAuthorized": "Revise la lista de las cuentas autorizadas,Complete el inicio de sesión haciedo click a countinuacion.", + "finish": "Finalizar" + }, + "install": { + "youllNeedToInstall": "Tendrás que instalar", + "toContinueAfterInstalling": "Para continuar, Despues de instalar", + "refreshThePage": "Recarga la pagina", + "open": "Abrir" + }, + "qr": { + "copiedToClipboard": "Copiado al Portapapeles", + "failedToCopy": "Falló la copia al Portapapeles", + "scanWithYourMobile": "Busca con tu dispositivo movil", + "copyToClipboard": " Copiar al Portapapeles", + "preferTheOfficial": "¿Prefires el diálogo oficial de", + "open": "Abrir" + }, + "walletTypes": { + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/hi.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/hi.json new file mode 100644 index 000000000..c8c5866ef --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/hi.json @@ -0,0 +1,67 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "अपना वॉलेट (Wallet) कनेक्ट करें।", + "whatIsAWallet": "वॉलेट क्या है?", + "secureAndManage": "सुरक्षित और प्रबंधित करें।", + "safelyStore": "अपनी क्रिप्टोकरेंसी और एनएफटी को सुरक्षित रूप से स्टोर और ट्रांसफर करें।", + "logInToAny": "NEAR पर किसी भी ऐप में साइन इन करें।", + "noNeedToCreate": "नए खाते या लॉगिन बनाने की आवश्यकता नहीं है। अपना वॉलेट(NEAR Wallet)कनेक्ट करें और आरंभ करें।", + "getAWallet": "एक वॉलेट बनाएँ।", + "useAWallet": "अपनी NEAR संपत्तियों को सुरक्षित और प्रबंधित करने के लिए वॉलेट का उपयोग करें और किसी भी NEAR ऐप (app) में लॉग इन करें, किसी उपयोगकर्ता (user) नाम और पासवर्ड की आवश्यकता नहीं है।", + "connectionFailed": "कनेक्शन विफल|", + "connectionSuccessful": "कनेक्शन सफल|", + "rememberWallet": "वॉलेटों को याद रखें", + "connected": "वॉलेट जुड़ गया|", + "connectingTo": "वॉलेट जुड़ रहा हे|", + "connectingMessage": { + "injected": "एक्सटेंशन विंडो में कनेक्शन की पुष्टि करें|", + "browser": "रीडायरेक्ट होने के बाद वॉलेट में कनेक्शन की पुष्टि करें|", + "hardware": "कोल्ड वॉलेट के साथ कनेक्शन की पुष्टि करें|" + } + }, + "ledger": { + "connectWithLedger": "लेजर(Ledger)वॉलेट कनेक्ट करें|", + "makeSureYourLedger": "सुनिश्चित करें कि आपका लेजर सुरक्षित रूप से जुड़ा हुआ है और NEAR ऐप आपके डिवाइस (Device)पर पहले से ही खुला है|", + "continue": "जारी रखे|", + "specifyHDPath": "हार्ड डिस्क(Hard Disk)पथ(Path)निर्धारित करे|", + "enterYourPreferredHDPath": "अपना एचडी पथ दर्ज करें, फिर सक्रिय खातों के लिए स्कैन करें|", + "scan": "स्कैन करे|", + "retry": "दोबारा प्रयास करे|", + "ledgerIsNotAvailable": "लेजर उपलब्ध नहीं है|", + "accessDeniedToUseLedgerDevice": "लेजर डिवाइस का उपयोग करने के लिए प्रवेश निषेध|", + "noAccountsFound": "खाता नहीं मिला|", + "selectYourAccounts": "अपने खाते चुनें|", + "connecting1Account": "एक खाता कनेक्ट हो रहा है|", + "cantFindAnyAccount": "इस लेजर से जुड़ा कोई खाता नहीं मिला। कृपया एक नया NEAR खाता बनाएँ|", + "orConnectAnAnotherLedger": "अथवा दूसरे लेजर वॉलेट से कनेक्ट करें।", + "connecting": "जुड़ रहा हे|", + "ofAccounts": "खाता अब जुड़ा नहीं हे|", + "failedToAutomatically": "खाता आईडी स्वचालित रूप से खोजने में असमर्थ। मैन्युअल (Manuall) रूप से कोशिश करें|", + "overviewTheListOfAuthorized": "अवलोकन अधिकृत की सूची, नीचे दिए गए बटन पर क्लिक करके लॉगिन पूरा करें।", + "finish": "समाप्त|" + }, + "install": { + "youllNeedToInstall": "आपको इंस्टॉल करना होगा|", + "toContinueAfterInstalling": "इंस्टॉल करने के बाद जारी रखे|", + "refreshThePage": "पुन: लोड करें।", + "open": "खोले|" + }, + "qr": { + "copiedToClipboard": "क्लिपबोर्ड(Clipboard)पर कॉपी किया गया|", + "failedToCopy": "क्लिपबोर्ड पर कॉपी करना विफल रहा|", + "scanWithYourMobile": "अपने फोन (Mobile)से स्कैन करें|", + "copyToClipboard": " क्लिपबोर्ड पर कॉपी करें|", + "preferTheOfficial": "आधिकारिक संवाद को प्राथमिकता दें|", + "open": "खोले|" + }, + "walletTypes": { + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/hr.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/hr.json new file mode 100644 index 000000000..1a6cc0967 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/hr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Spojite crypto novčanik!", + "whatIsAWallet": "Što je to crypto novčanik?", + "secureAndManage": "Osigurajte i upravljajte svojom digitalnom imovinom.", + "safelyStore": "Sigurno pohranite i prebacite svoj crypto i NFT-eve.", + "logInToAny": " Prijavite se u bilo koju NEAR aplikaciju", + "noNeedToCreate": "Nema potrebe za stvaranjem novih naloga ili korisničkih podataka. Spojite svoj crypto novčanik i spremni ste!", + "getAWallet": "Otvorite crypto novčanik", + "useAWallet": "Koristite crypto novčanik da biste osigurali i upravljali svojom NEAR imovinom, te se prijavite u bilo koju NEAR aplikaciju bez korisničkog imena i lozinke.", + "connectionFailed": "Neuspješno povezivanje.", + "connectionSuccessful": "Uspješno povezivanje.", + "rememberWallet": "Zapamti novčanike", + "connected": "Povezano.", + "connectingTo": "Povezivanje u tijeku", + "connectingMessage": { + "injected": "Potvrdite vezu u eksternom prozoru", + "browser": "Nakon redirekcije, potvrdite vezu u novčaniku", + "hardware": "Potvrdite vezu sa novčanikom", + "bridge": "Potvrdite vezu u novčaniku" + } + }, + "ledger": { + "connectWithLedger": "Povežite se hardverskim novčanikom", + "makeSureYourLedger": "Osigurajte sigurnu vezu s hardverskim novčanikom, te da je NEAR aplikacija otvorena na vašem uređaju", + "continue": "Nastavite", + "specifyHDPath": "Specificirajte HD putanju", + "enterYourPreferredHDPath": "Upišite preferiranu HD putanju, zatim skenirajte aktivne naloge", + "scan": "Skenirajte", + "retry": "Pokušajte ponovno", + "ledgerIsNotAvailable": "Hardverski novčanik nije dostupan.", + "accessDeniedToUseLedgerDevice": "Odbijen pristup za korištenjem hardverskog novčanika", + "noAccountsFound": "Nalozi nisu pronađeni", + "selectYourAccounts": "Odaberite svoje naloge", + "connecting1Account": "Povezivanje 1 naloga", + "cantFindAnyAccount": "Nije moguće pronaći niti jedan nalog povezan s ovim hardverskim novčanikom. Molimo vas, kreirajte novi NEAR nalog", + "orConnectAnAnotherLedger": "Ili povežite drugi hardverski novčanik.", + "connecting": "Povezivanje", + "ofAccounts": "naloga", + "failedToAutomatically": "Neuspješno automatsko pronalaženje ID naloga. Unesite ručno:", + "overviewTheListOfAuthorized": "Pregledajte popis odobrenih naloga, završite prijavu pritiskom na niže prikazani gumb.", + "finish": "Završite" + }, + "install": { + "youllNeedToInstall": " Potrebno je instalirati modal", + "toContinueAfterInstalling": "za nastavak. Nakon instalacije", + "refreshThePage": "osvježite stranicu.", + "open": "Otvorite QR modal" + }, + "qr": { + "copiedToClipboard": "Kopirano u međuspremnik", + "failedToCopy": "Neupsješno kopiranje u međuspremnik", + "scanWithYourMobile": "Skenirajte svojim mobilnim uređajem", + "copyToClipboard": " Kopirajte u međuspremnik", + "preferTheOfficial": "Odaberite službeni dijalog", + "open": "Otvorite" + }, + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet", + "instant-link": "Instant Wallet" + }, + "exportAccounts": { + "chooseAWallet": "Odaberi Wallet", + "transferYourAccounts": "Prenesi svoje naloge", + "selectAWallet": "Odaberite wallet koji odgovara vašim potrebama i podržava vaše povezane naloge.", + "selectYourAccounts": "Odaberi svoje naloge", + "afterDecide": "Nakon što odlučite koji wallet koristite, možete odabrati koje račune želite prebaciti.", + "disclaimer": "Nećete moći prebaciti naloge koji nisu nikada bili korišteni na NEAR-u.", + "warning": "ne podržava izvoz naloga u ovom trenutku. Molimo odaberite drugi wallet.", + "walletTypes": { + "hardware": "Hardware Wallet", + "browser": "Browser Wallet", + "injected": "Wallet Extension", + "bridge": "Bridge Wallet", + "mobile": "Mobile Wallet" + }, + "selectAccounts": { + "title": "Odaberi naloge za prijenos", + "button": "Generiraj lozinku", + "deselectAll": "Makni odabir sa svih", + "selectAll": "Odaberi sve", + "unavailable": "Prijenos nije dostupan", + "error": "Nalog ne postoji", + "warningLedger": "Potrebna ledger podrška", + "noBalance": "Nalog nema sredstava" + }, + "getPassphrase": { + "title": "Kopiraj privremenu lozinku", + "desc": "Bit će potrebno unijeti ovu lozinku na početku izvoza naloga na drugi wallet.", + "button": "Nastavi", + "label": "Klikni za kopiju", + "checkLabel": "Kopirao sam ili zapisao lozinku" + }, + "complete": { + "title": "Završi prijenos", + "descOne": "You will now be redirected to the wallet you selected to complete the transfer.", + "descTwo": "Kada je unos s odabranog walleta završen, pritisnite gumb da biste završili prijenos.", + "button": "Završi" + } + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/ko.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/ko.json new file mode 100644 index 000000000..e5c20d2d6 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/ko.json @@ -0,0 +1,68 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "지갑 연결하기", + "whatIsAWallet": "지갑은 무슨 역할을 하나요?", + "secureAndManage": "당신의 디지털 자산을 보호하고 관리합니다.", + "safelyStore": "암호화폐와 NFT를 안전하게 저장하고 전송할 수 있습니다.", + "logInToAny": "NEAR App에 로그인합니다.", + "noNeedToCreate": "새로운 계정이나 비밀번호를 만들 필요 없이 지갑을 연결한 후 바로 사용할 수 있습니다.", + "getAWallet": "지갑 가져오기", + "useAWallet": "지갑을 사용하여 NEAR 자산을 보호·관리하고, 아이디와 비밀번호 없이 NEAR 앱에 로그인할 수 있습니다.", + "connectionFailed": "연결 실패", + "connectionSuccessful": "연결 성공", + "rememberWallet": "지갑들 기억하기", + "connected": "Connected", + "connectingTo": "연결 중: ", + "connectingMessage": { + "injected": "익스텐션 창에서 연결을 확인하세요", + "browser": "리다이렉트 된 지갑에서 연결을 확인하세요", + "hardware": "Ledger 기기에서 연결을 확인하세요", + "bridge": "지갑에서 연결 확인" + } + }, + "ledger": { + "connectWithLedger": "Ledger 연결하기", + "makeSureYourLedger": "Ledger가 안전하게 연결되어 있고, NEAR 앱이 열려 있는 지 확인하세요", + "continue": "계속하기", + "specifyHDPath": "HD Path 지정하기", + "enterYourPreferredHDPath": "원하는 HD Path를 선택하고, 활성화된 계정이 있는 지 검색하세요", + "scan": "검색", + "retry": "다시 시도", + "ledgerIsNotAvailable": "Ledger를 사용할 수 없습니다", + "accessDeniedToUseLedgerDevice": "Ledger 기기 접근 권한이 거부되었습니다", + "noAccountsFound": "계정을 찾을 수 없습니다", + "selectYourAccounts": "계정 선택하기", + "connecting1Account": "하나의 계정에 연결", + "cantFindAnyAccount": "Ledger와 연결된 계정을 찾을 수 없습니다. 새로운 계정을 생성하거나 ", + "orConnectAnAnotherLedger": "다른 Ledger를 연결하세요", + "connecting": "계정 연결하기: ", + "ofAccounts": "개 계정을 찾았습니다", + "failedToAutomatically": "계정 ID를 찾지 못했습니다. 수동으로 입력해주세요.", + "overviewTheListOfAuthorized": "인증된 계정 목록을 확인한 후 아래 버튼을 클릭하여 로그인을 완료하세요", + "finish": "완료" + }, + "walletTypes": { + "hardware": "하드웨어 지갑", + "browser": "브라우저 지갑", + "injected": "지갑 확장", + "bridge": "브리지 지갑", + "mobile": "모바일 지갑", + "instant-link": "인스턴트 지갑" + }, + "install": { + "youllNeedToInstall": "다음 확장 프로그램을 설치해주세요:", + "toContinueAfterInstalling": ". 설치 완료 후 페이지 새로 고침이 필요합니다. ", + "refreshThePage": "새로 고침", + "open": "Open" + }, + "qr": { + "copiedToClipboard": "클립보드에 복사 완료", + "failedToCopy": "클립보드에 복사 실패", + "scanWithYourMobile": "모바일 장치를 사용하여 스캔해주세요", + "copyToClipboard": " 클립보드에 복사하기", + "preferTheOfficial": "다음 프로그램에서 제공하는 공식 프로세스를 선호하십니까: ", + "open": "Open" + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/mk.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/mk.json new file mode 100644 index 000000000..f75e74659 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/mk.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Поврзете го вашиот новчаник!", + "whatIsAWallet": "Што е новчаник?", + "secureAndManage": "Заштитете ги и управувајте со вашите дигитални средства.", + "safelyStore": "Безбедно складирајте и извршувајте трансакции со вашите крипто и NFT.", + "logInToAny": "Најавете се на која било NEAR апликација", + "noNeedToCreate": "Нема потреба да креирате нови сметки или ингеренции. Поврзете го вашиот паричник и сте подготвени!", + "getAWallet": "Направете новчаник", + "useAWallet": "Користете паричник за да ги заштитите и управувате вашите NEAR средства и да се најавите на која било NEAR апликација без потреба од кориснички имиња и лозинки.", + "connectionFailed": "Поврзувањето не беше успешно.", + "connectionSuccessful": "Успешно поврзување.", + "rememberWallet": "Запомни паричници", + "connected": "Поврзано.", + "connectingTo": "Поврзување со", + "connectingMessage": { + "injected": "Потврдете го поврзувањето во екстерниот прозорец", + "browser": "По преусмерувањето, потврдете го поврзувањето од новчаниокт", + "hardware": "Потврдете го поврзувањето со ладен новчаник", + "bridge": "Потврдете ја врската во новчаникот" + } + }, + "ledger": { + "connectWithLedger": "Поврзете се со Леџер", + "makeSureYourLedger": "Осигурајте се дека вашиот Леџер е поврзан безбедно, и дека NEAR апликацијата е отворена на вашиот уред", + "continue": "Продолжете", + "specifyHDPath": "Наведете ХД локација", + "enterYourPreferredHDPath": "Внесете ја вашата преферирана ХД локација, а потоа скенирајте да ги најдете активните сметки.", + "scan": "Скенирајте", + "retry": "Обидете се повторно", + "ledgerIsNotAvailable": "Леџерот не е достапен.", + "accessDeniedToUseLedgerDevice": "Пристапот за користење на Леџер уред е одбиен", + "noAccountsFound": "Нема најдени сметки", + "selectYourAccounts": "Изберете ги вашите сметки", + "connecting1Account": "Поврзување на една сметка", + "cantFindAnyAccount": "Не се најдени сметки поврзани со овој Леџер. Ве молиме креирајте нова NEAR сметка ", + "orConnectAnAnotherLedger": "или поврзете друг Леџер.", + "connecting": "Поврзување", + "ofAccounts": "на сметки", + "failedToAutomatically": "Неуспешно автоматско барање на ИД на сметката. Внесете го рачно:", + "overviewTheListOfAuthorized": "Преглед на листата на овластени сметки, завршете се најавата со кликнување на копчето подолу.", + "finish": "Завршете" + }, + "install": { + "youllNeedToInstall": "Треба да инсталирате", + "toContinueAfterInstalling": "за да продолжите. По инсталирањето", + "refreshThePage": "Освежете ја страната.", + "open": "Отворете" + }, + "qr": { + "copiedToClipboard": "Копирано на клипбордот", + "failedToCopy": "Неуспешно копирање на клипборд", + "scanWithYourMobile": "Скенирајте со вашиот телефонски уред", + "copyToClipboard": "Копирајте на клипборд", + "preferTheOfficial": "Преферирајте официјален диалог на", + "open": "Отворете" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник", + "instant-link": "Инстант паричник" + }, + "exportAccounts": { + "chooseAWallet": "Одберете паричник", + "transferYourAccounts": "Префрлете ги вашите кориснички сметки", + "selectAWallet": "Изберетен новчаник кој ги задоволува вашите баранња и ги поддржува вашите поврзани кориснички сметки.", + "selectYourAccounts": "Изберете ги вашите кориснички сметки", + "afterDecide": "Одкако ќе изберете новчаник, можете да изберете кои кориснички сметки сакате да ги префрлите.", + "disclaimer": "Не можете да прфрлате кориснички сметки кои никогаш не биле надополнати или користени на NEAR.", + "warning": "не поддржува извезување на кориснички сметки во овој момент. Ве молиме изберете друг новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник на интернет прелистувач", + "injected": "Екстензија за новчаник", + "bridge": "Bridge новчаник", + "mobile": "Мобилен новчаник" + }, + "selectAccounts": { + "title": "Изберете ги корисничките сметки за да ги префрлите.", + "button": "Добијте лозинка", + "deselectAll": "Отселектирајте се", + "selectAll": "Изберете се", + "unavailable": "Трансферот е недостапен", + "error": "Корисничката сметка не постои", + "warningLedger": "Потребна е поддршка од Леџер", + "noBalance": "Сметката не е финансирана" + }, + "getPassphrase": { + "title": "Копирајте ја привремената лозинка", + "desc": "Ќе треба да ја внесете оваа лозинка кога ќе започнете да ги извезувате вашите сметки на друг новчаник.", + "button": "Продолжете", + "label": "Кликнете за да копирате", + "checkLabel": "Ја копирав или запишав лозинката" + }, + "complete": { + "title": "Завршете го преносот", + "descOne": "Сега ќе бидете пренасочени на избраниот новчаник за завршување на преносот.", + "descTwo": "Откако ќе заврши увозот од избраниот новчаник, притиснете го копчето за да го завршите преносот.", + "button": "Завршете" + } + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/sl.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/sl.json new file mode 100644 index 000000000..20b795b9a --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/sl.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Povežite svojo denarnico!", + "whatIsAWallet": "Kaj je denarnica?", + "secureAndManage": "Zavarujte in upravljajte svoja digitalna sredstva.", + "safelyStore": "Varno shranjujte in prenašajte svoje kriptovalute in NFTje.", + "logInToAny": "Prijavite se v katero koli aplikacijo na NEAR", + "noNeedToCreate": "Ni vam treba ustvarjati novih računov. Povežite svojo denarnico in začnite!", + "getAWallet": "Ustvarite denarnico", + "useAWallet": "Uporabite denarnico, da bi zavarovali in upravljali s svoja NEAR digitalna sredstva, in se prijavite v katero koli aplikacijo ekosistema NEAR", + "connectionFailed": "Povezava ni bila uspešna.", + "connectionSuccessful": "Povezava je bila uspešna.", + "rememberWallet": "Zapomni si denarnice", + "connected": "Vaša denarnica je povezana.", + "connectingTo": "Povezovanje z", + "connectingMessage": { + "injected": "Potrdite povezavo v oknu razširitve", + "browser": "Po preusmeritvi potrdite povezavo v denarnici", + "hardware": "Potrdite povezavo s hladno denarnico", + "bridge": "Potrdite povezavo v denarnici" + } + }, + "ledger": { + "connectWithLedger": "Povežite se z Ledger", + "makeSureYourLedger": "Prepričajte se, da je vaš Ledger varno povezan in da je aplikacija NEAR odprta v vaši napravi", + "continue": "Nadaljuj", + "specifyHDPath": "Določite HD pot", + "enterYourPreferredHDPath": "Vnesite želeno HD pot, nato poiščite vse aktivne račune.", + "scan": "Skenirajte", + "retry": "Poskusite znova", + "ledgerIsNotAvailable": "Ledger ni na voljo", + "accessDeniedToUseLedgerDevice": "Dostop za uporabo naprave Ledger zavrnjen", + "noAccountsFound": "Ni najdenih računov", + "selectYourAccounts": "Izberite Vaši računi", + "connecting1Account": "Povezovanje enega računa", + "cantFindAnyAccount": "Ni mogoče najti nobenega računa, povezanega s tem Ledgerjem. Ustvarite nov NEAR račun ", + "orConnectAnAnotherLedger": "ali povežite drug Ledger..", + "connecting": "Povezovanje", + "ofAccounts": "računov", + "failedToAutomatically": "ID-ja računa ni bilo mogoče samodejno najti. Zagotovite ga ročno:", + "overviewTheListOfAuthorized": "Oglejte si seznam pooblaščenih računov, dokončajte prijavo s klikom na spodnji gumb.", + "finish": "Končajte" + }, + "install": { + "youllNeedToInstall": "Morali ga boste namestiti", + "toContinueAfterInstalling": "nadaljevati. Po namestitvi", + "refreshThePage": "Osvežite stran.", + "open": "Odprite" + }, + "qr": { + "copiedToClipboard": "Kopirano v podložni mapi", + "failedToCopy": "Kopiranje v podložni mapi ni uspelo", + "scanWithYourMobile": "Skenirajte s svojo mobilno napravo", + "copyToClipboard": " Kopirajte v podložni mapi", + "preferTheOfficial": "Preferirajte uradno pogovorno okno", + "open": "Odprite" + }, + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica", + "instant-link": "Takojšnja denarnica" + }, + "exportAccounts": { + "chooseAWallet": "Izberite denarnico", + "transferYourAccounts": "Prenesite svoje račune", + "selectAWallet": "Izberite denarnico, ki ustreza vašim potrebam in podpira vaše povezane račune.", + "selectYourAccounts": "Izberite vaši računi", + "afterDecide": "Ko se odločite za denarnico, lahko izberete, katere račune želite prenesti.", + "disclaimer": "Ne boste mogli prenesti Računov, ki nikoli niso bili financirani ali uporabljeni na NEAR.", + "warning": "trenutno ne podpira izvoza računa. Izberite drugo denarnico", + "walletTypes": { + "hardware": "Hladna denarnica", + "browser": "Denarnica brskalnika", + "injected": "Razširitev za denarnico", + "bridge": "Bridge denarnica", + "mobile": "Mobilna denarnica" + }, + "selectAccounts": { + "title": "Izberite računi za prenos.", + "button": "Pridobite geslo", + "deselectAll": "Prekliči izbiro vseh", + "selectAll": "Izberi vse", + "unavailable": "Prenos ni na voljo", + "error": "Račun ne obstaja", + "warningLedger": "Potrebna je podpora za Ledger", + "noBalance": "Račun ni financiran" + }, + "getPassphrase": { + "title": "Kopiraj začasno geslo", + "desc": "To geslo boste morali vnesti, ko boste začeli izvažati svoje račune v drugo denarnico.", + "button": "Nadaljujte", + "label": "Kliknite za kopiranje", + "checkLabel": "Geslo sem kopiral ali zapisal" + }, + "complete": { + "title": "Dokončajte prenos", + "descOne": "Zdaj boste preusmerjeni v denarnico, ki ste jo izbrali za dokončanje prenosa.", + "descTwo": "Ko je uvozni del postopka končan iz izbrane denarnice, pritisnite gumb za dokončanje postopka prenosa.", + "button": "Končajte" + } + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/sr.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/sr.json new file mode 100644 index 000000000..094c75982 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/sr.json @@ -0,0 +1,107 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Повежите свој новчаник!", + "whatIsAWallet": "Шта је новчаник?", + "secureAndManage": "Обезбедите и управљајте својом дигиталном имовином.", + "safelyStore": "Безбедно чувајте и преносите своје криптовалуте и NFT.", + "logInToAny": "Пријавите се на било коју апликацију NEAR", + "noNeedToCreate": "Нема потребе да креирате нове налоге или акредитиве. Повежите новчаник и спремни стe!", + "getAWallet": "Набавите новчаник", + "useAWallet": "Користите новчаник да обезбедите и управљате својим NEAR средствима и да се пријавите у било коју апликацију NEAR без потребе за корисничким именима и лозинкама.", + "connectionFailed": "Веза није успостављена.", + "connectionSuccessful": "Веза је успела.", + "rememberWallet": "Запамти новчанике", + "connected": "Повезан.", + "connectingTo": "Повезивање на", + "connectingMessage": { + "injected": "Потврдите везу у спољном прозору", + "browser": "Након преусмеравања, потврдите везу у новчанику", + "hardware": "Потврдите везу са хладним новчаником", + "bridge": "Потврдите везу са новчаником" + } + }, + "ledger": { + "connectWithLedger": "Повежите се са Ledger", + "makeSureYourLedger": "Уверите се да је ваш Ledger безбедно повезан и да је апликација NEAR отворена на вашем уређају", + "continue": "Настави", + "specifyHDPath": "Наведите ХД путању", + "enterYourPreferredHDPath": "Унесите жељену жељену ХД путању, а затим скенирајте све активне налоге.", + "scan": "Скенирајте", + "retry": "Покушај поново", + "ledgerIsNotAvailable": "Ledger није доступан.", + "accessDeniedToUseLedgerDevice": "Приступ је одбијен за коришћење Ledger уређаја", + "noAccountsFound": "Наlози нису пронађени", + "selectYourAccounts": "Изаберите Ваш наlог", + "connecting1Account": "Повезати 1 наlог", + "cantFindAnyAccount": "Није могуће пронаћи ниједан наlог повезан са овим Ledger-ом. Направите нови NEAR наlог", + "orConnectAnAnotherLedger": "или повежите други Ledger.", + "connecting": "Повезивање", + "ofAccounts": "наlога", + "failedToAutomatically": "Аутоматско проналажење ID-a наlога није успело. Наведите га ручно:", + "overviewTheListOfAuthorized": "Прегледајте листу овлашћених рачуна, завршите пријаву кликом на дугме испод.", + "finish": "Заврши" + }, + "install": { + "youllNeedToInstall": "Мораћете да инсталирате", + "toContinueAfterInstalling": "за наставак. Након инсталирања", + "refreshThePage": "поново учитати страницу.", + "open": "Отвори" + }, + "qr": { + "copiedToClipboard": "Копирано у међуспремник", + "failedToCopy": "Копирање у међуспремник није успело", + "scanWithYourMobile": "Скенирајте помоћу мобилног уређаја", + "copyToClipboard": " Копирај у међуспремник", + "preferTheOfficial": "Преферирате званични дијалог од", + "open": "Отвори" + }, + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник", + "instant-link": "Инстант новчаник" + }, + "exportAccounts": { + "chooseAWallet": "Изаберите новчаник", + "transferYourAccounts": "Пренесите своје налоге", + "selectAWallet": "Изаберите новчаник који одговара вашим потребама и који подржава ваше повезане налоге.", + "selectYourAccounts": "Изаберите ваше налоге", + "afterDecide": "Након што се одлучите за новчаник, можете изабрати које налоге желите да пренесете.", + "disclaimer": "Нећете моћи да пренесете налоге који никада нису били финансирани или коришћени на NEAR.", + "warning": "тренутно не подржава извоз налога. Изаберите други новчаник.", + "walletTypes": { + "hardware": "Хардверски новчаник", + "browser": "Новчаник претраживача,", + "injected": "Додатак за новчаник,", + "bridge": "Bridge новчаник", + "mobile": "Мобилни новчаник" + }, + "selectAccounts": { + "title": "Изаберите налоге за пренос.", + "button": "Добијте приступну фразу", + "deselectAll": "Поништите избор", + "selectAll": "Изаберите све", + "unavailable": "Трансфер није доступан", + "error": "Налог не постоји", + "warningLedger": "Потребна подршка за Ledger", + "noBalance": "Налог није финансиран" + }, + "getPassphrase": { + "title": "Копирај привремену лозинку", + "desc": "Мораћете да унесете ову лозинку када почнете да извозите своје налоге у други новчаник.", + "button": "Наставите", + "label": "Кликните да бисте копирали", + "checkLabel": "Копирао сам или записао лозинку" + }, + "complete": { + "title": "Довршите трансфер", + "descOne": "Сада ћете бити преусмерени на новчаник који сте изабрали да завршите трансфер.", + "descTwo": "Када се део процеса увоза заврши из изабраног новчаника, притисните дугме да завршите процес преноса.", + "button": "Завршите" + } + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/vi.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/vi.json new file mode 100644 index 000000000..025d762e7 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/vi.json @@ -0,0 +1,113 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "Kết nối ví của bạn", + "whatIsAWallet": "Ví là gì?", + "secureAndManage": "Bảo mật & Quản lý tài sản số của bạn", + "safelyStore": "Lưu trữ và chuyển tiền điện tử và NFT của bạn một cách an toàn.", + "logInToAny": "Đăng nhập vào bất kỳ ứng dụng trên NEAR", + "noNeedToCreate": "Không cần tạo tài khoản hoặc thông tin đăng nhập mới. Kết nối ví của bạn và bắt đầu!", + "getAWallet": "Tạo Ví", + "useAWallet": "Sử dụng ví để bảo mật và quản lý tài sản trên NEAR của bạn và đăng nhập vào bất kỳ ứng dụng NEAR nào, không cần tên người dùng và mật khẩu.", + "connectionFailed": "Kết nối thất bại", + "connectionSuccessful": "Kết nối thành công", + "rememberWallet": "Ghi nhớ lựa chọn ví", + "connected": "Đã kết nối", + "connectingTo": "Đang kết nối tới", + "connectingMessage": { + "injected": "Xác nhận kết nối trong cửa sổ tiện ích mở rộng", + "browser": "Xác nhận kết nối trong ví sau khi được chuyển hướng", + "hardware": "Xác nhận kết nối với ví lạnh", + "bridge": "Xác nhận kết nối trong ví" + } + }, + "ledger": { + "connectWithLedger": "Kết nối ví Ledger", + "makeSureYourLedger": "Đảm bảo Ledger của bạn được kết nối an toàn và ứng dụng NEAR đang mở sẵn trên thiết bị", + "continue": "Tiếp tục", + "specifyHDPath": "Chỉ định HD Path", + "enterYourPreferredHDPath": "Nhập HD Path của bạn, sau đó quét tìm các tài khoản hoạt động", + "scan": "Quét", + "retry": "Thử lại", + "ledgerIsNotAvailable": "Ledger không khả dụng", + "accessDeniedToUseLedgerDevice": "Truy cập Ledger bị từ chối", + "noAccountsFound": "Không tìm thấy tài khoản", + "selectYourAccounts": "Chọn tài khoản của bạn", + "connecting1Account": "Đang kết nối 1 tài khoản", + "cantFindAnyAccount": "Không thể tìm thấy bất kỳ tài khoản nào được liên kết với Ledger này. Vui lòng tạo một tài khoản NEAR mới", + "orConnectAnAnotherLedger": "hoặc kết nối với ví Ledger khác.", + "connecting": "Đang kết nối", + "ofAccounts": "của tài khoản", + "failedToAutomatically": "Không thể tự động tìm id tài khoản. Nhập thủ công:", + "overviewTheListOfAuthorized": "Tổng quan danh sách các tài khoản được ủy quyền, hoàn tất đăng nhập bằng cách bấm vào nút bên dưới.", + "finish": "Hoàn thành" + }, + "install": { + "youllNeedToInstall": "Bạn sẽ cần cài đặt", + "toContinueAfterInstalling": "để bắt đầu. Sau khi cài đặt xong", + "refreshThePage": "Tải lại trang.", + "open": "Mở" + }, + "qr": { + "copiedToClipboard": "Đã sao chép vào bảng ghi tạm", + "failedToCopy": "Sao chép vào bảng ghi tạm thất bại", + "scanWithYourMobile": "Quét với điện thoại của bạn", + "copyToClipboard": " Sao chép vào bảng ghi tạm", + "preferTheOfficial": "Dialogue chính thức của", + "open": "Mở" + }, + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile", + "instant-link": "Ví tức thì" + }, + "exportAccounts": { + "chooseAWallet": "Chọn ví", + "transferYourAccounts": "Chuyển tài khoản", + "selectAWallet": "Chọn ví phù hợp với nhu cầu của bạn, ví được chọn cần hỗ trợ các tài khoản đang sử dụng.", + "selectYourAccounts": "Chọn tài khoản", + "afterDecide": "Sau khi chọn được tài khoản bạn có chuyển.", + "disclaimer": "Bạn không thể chuyển tài khoản nếu tài khoản đó chưa được nhận tiền hoặc chưa phát sinh giao dịch trên NEAR.", + "warning": "không hỗ trợ xuất tài khoản. Vui lòng chọn ví khác.", + "walletTypes": { + "hardware": "Ví lạnh", + "browser": "Ví trình duyệt", + "injected": "Ví tiện ích mở rộng", + "bridge": "Ví Cầu", + "mobile": "Ví Mobile" + }, + "selectAccounts": { + "title": "Chọn tài khoản để chuyển", + "button": "Lấy cụm mật khẩu", + "deselectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn tất cả", + "unavailable": "Chuyển không khả dụng", + "error": "Tài khoản không tồn tại", + "warningLedger": "Yêu cầu hỗ trợ Ledger", + "noBalance": "Tài khoản trống" + }, + "getPassphrase": { + "title": "Sao chép mật khẩu tạm thời", + "desc": "Bạn sẽ cần nhập mật khẩu khi bắt đầu xuất các khoản tới ví khác.", + "button": "Tiếp tục", + "label": "Bấm để sao chép", + "checkLabel": "Tôi đã chép hoặc ghi lại mật khẩu" + }, + "complete": { + "title": "Hoàn thành chuyển", + "descOne": "Bạn sẽ được chuyển hướng tới tài khoản đã chọn để hoàn tất quá trình.", + "descTwo": "Sau khi nhập, nhấn nút để hoàn tất quy trình chuyển.", + "button": "Hoàn thành" + } + } + }, + "component": { + "clickToCopy": { + "label": "Đã sao chép", + "tooltip": "Bấm để sao chép" + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/locale/zh.json b/packages/wallet-utils/dist/esm/core/src/lib/locale/zh.json new file mode 100644 index 000000000..2f363c7b1 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/locale/zh.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "连接你的钱包", + "whatIsAWallet": "什么是钱包?", + "secureAndManage": "保护和管理你的数字资产", + "safelyStore": "安全存储和转移你的加密货币和NFT", + "logInToAny": "登录任何 NEAR 应用", + "noNeedToCreate": "不需要创建新账户或密码。连接你的钱包,即可开始使用!", + "getAWallet": "获取新账户", + "useAWallet": "使用钱包来保护和管理你的 NEAR 资产,无需用户名和密码即可登录任何 NEAR 应用", + "connectionFailed": "连接失败", + "connectionSuccessful": "连接成功", + "rememberWallet": "记住钱包选择", + "connected": "已连接", + "connectingTo": "正在连接" + }, + "ledger": { + "connectWithLedger": "连接 Ledger", + "makeSureYourLedger": "确保你的 Ledger 已经安全连接,并且 NEAR 应用已经在你设备上打开", + "continue": "继续", + "specifyHDPath": "指定 HD 路径", + "enterYourPreferredHDPath": "输入你偏好的 HD 路径,然后为任意活跃账户扫码", + "scan": "扫码", + "retry": "重试", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "访问 Ledger 设备被拒绝", + "noAccountsFound": "没有找到账户", + "selectYourAccounts": "选择你的账户", + "connecting1Account": "正在连接1个账户", + "cantFindAnyAccount": "没有找到任何与这个 Ledger 相关联的账户。请创建新账户于", + "orConnectAnAnotherLedger.": "或连接另一个 Ledger", + "connecting": "正在连接", + "ofAccounts": "个账户", + "failedToAutomatically": "无法自动找到账户ID,请主动提供:", + "overviewTheListOfAuthorized": "请查看已授权的账户列表,点击以下按钮完成登录", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你将需要安装", + "toContinueAfterInstalling": "以继续。安装完", + "refreshThePage": "请刷新页面", + "open": "打开" + }, + "qr": { + "copiedToClipboard": "复制到了剪贴板", + "failedToCopy": "复制到剪贴板失败", + "scanWithYourMobile": "用你的移动设备扫码", + "copyToClipboard": " 复制到剪贴板", + "preferTheOfficial": "希望使用官方对话框于", + "open": "打开" + }, + "walletTypes": { + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/options.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/options.d.ts new file mode 100644 index 000000000..bc6d1111b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/options.d.ts @@ -0,0 +1,9 @@ +import type { WalletSelectorParams } from "./wallet-selector.types"; +import type { Options, Network, NetworkId } from "./options.types"; +export declare const getNetworkPreset: (networkId: NetworkId, fallbackRpcUrls?: Array) => Network; +export declare const resolveNetwork: (network: NetworkId | Network) => Network; +export declare const resolveOptions: (params: WalletSelectorParams) => { + options: Options; + storage: import("./services").StorageService; +}; +//# sourceMappingURL=options.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/options.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/options.d.ts.map new file mode 100644 index 000000000..e8ce7bf80 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/options.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGnE,eAAO,MAAM,gBAAgB,cAChB,SAAS,oBACF,KAAK,CAAC,MAAM,CAAC,KAC9B,OAqBF,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,SAAS,GAAG,OAAO,KAAG,OAE7D,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,oBAAoB;;;CAc1D,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/options.js b/packages/wallet-utils/dist/esm/core/src/lib/options.js new file mode 100644 index 000000000..fa6b65f26 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/options.js @@ -0,0 +1,40 @@ +import { WebStorageService } from "./services"; +export const getNetworkPreset = (networkId, fallbackRpcUrls) => { + switch (networkId) { + case "mainnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.mainnet.near.org", + helperUrl: "https://helper.mainnet.near.org", + explorerUrl: "https://nearblocks.io", + indexerUrl: "https://api.kitwallet.app", + }; + case "testnet": + return { + networkId, + nodeUrl: fallbackRpcUrls?.[0] || "https://rpc.testnet.near.org", + helperUrl: "https://helper.testnet.near.org", + explorerUrl: "https://testnet.nearblocks.io", + indexerUrl: "https://testnet-api.kitwallet.app", + }; + default: + throw Error(`Failed to find config for: '${networkId}'`); + } +}; +export const resolveNetwork = (network) => { + return typeof network === "string" ? getNetworkPreset(network) : network; +}; +export const resolveOptions = (params) => { + const options = { + languageCode: params.languageCode || undefined, + network: resolveNetwork(params.network), + debug: params.debug || false, + optimizeWalletOrder: params.optimizeWalletOrder === false ? false : true, + randomizeWalletOrder: params.randomizeWalletOrder || false, + relayerUrl: params.relayerUrl || undefined, + }; + return { + options, + storage: params.storage || new WebStorageService(), + }; +}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/options.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/options.types.d.ts new file mode 100644 index 000000000..45a8b9888 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/options.types.d.ts @@ -0,0 +1,51 @@ +import type { SupportedLanguage } from "./translate/translate"; +export type NetworkId = "mainnet" | "testnet"; +export interface Network { + /** + * Network ID (e.g. `testnet`). + */ + networkId: string; + /** + * URL for RPC requests. + */ + nodeUrl: string; + /** + * URL for creating accounts. + */ + helperUrl: string; + /** + * URL for the NEAR explorer. + */ + explorerUrl: string; + /** + * URL for the NEAR indexer. + */ + indexerUrl: string; +} +export interface Options { + /** + * ISO 639-1 two-letter language code. + */ + languageCode: SupportedLanguage | undefined; + /** + * Resolved network configuration. + */ + network: Network; + /** + * Whether internal logging is enabled. + */ + debug: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder: boolean; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl: string | undefined; +} +//# sourceMappingURL=options.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/options.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/options.types.d.ts.map new file mode 100644 index 000000000..663fb6879 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/options.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"options.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/options.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/options.types.js b/packages/wallet-utils/dist/esm/core/src/lib/options.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/options.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts new file mode 100644 index 000000000..00a0b6840 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts @@ -0,0 +1,8 @@ +import type { EventEmitterService, Subscription } from "./event-emitter.types"; +export declare class EventEmitter> implements EventEmitterService { + private emitter; + on(eventName: Event, callback: (event: Events[Event]) => void): Subscription; + off(eventName: Event, callback: (event: Events[Event]) => void): void; + emit(eventName: Event, event: Events[Event]): void; +} +//# sourceMappingURL=event-emitter.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map new file mode 100644 index 000000000..80b80c736 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,YAAW,mBAAmB,CAAC,MAAM,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAuB;IAEtC,EAAE,CAAC,KAAK,SAAS,MAAM,MAAM,EAC3B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GACvC,YAAY;IAQf,GAAG,CAAC,KAAK,SAAS,MAAM,MAAM,EAC5B,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;IAK1C,IAAI,CAAC,KAAK,SAAS,MAAM,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;CAGxE"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js new file mode 100644 index 000000000..304200d75 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.service.js @@ -0,0 +1,16 @@ +import { EventEmitter as NEventEmitter } from "events"; +export class EventEmitter { + emitter = new NEventEmitter(); + on(eventName, callback) { + this.emitter.on(eventName, callback); + return { + remove: () => this.emitter.off(eventName, callback), + }; + } + off(eventName, callback) { + this.emitter.off(eventName, callback); + } + emit(eventName, event) { + this.emitter.emit(eventName, event); + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts new file mode 100644 index 000000000..3a25067e0 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts @@ -0,0 +1,9 @@ +export interface Subscription { + remove: () => void; +} +export interface EventEmitterService> { + on(eventName: EventName, callback: (event: Events[EventName]) => void): Subscription; + off(eventName: EventName, callback: (event: Events[EventName]) => void): void; + emit(eventName: EventName, event: Events[EventName]): void; +} +//# sourceMappingURL=event-emitter.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map new file mode 100644 index 000000000..6e4178d43 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-emitter.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/event-emitter/event-emitter.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,EAAE,CAAC,SAAS,SAAS,MAAM,MAAM,EAC/B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,YAAY,CAAC;IAEhB,GAAG,CAAC,SAAS,SAAS,MAAM,MAAM,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,GAC3C,IAAI,CAAC;IAER,IAAI,CAAC,SAAS,SAAS,MAAM,MAAM,EACjC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GACvB,IAAI,CAAC;CACT"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/event-emitter/event-emitter.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/index.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/index.d.ts new file mode 100644 index 000000000..7f06b3d8e --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/index.d.ts @@ -0,0 +1,12 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/index.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/index.d.ts.map new file mode 100644 index 000000000..f34146ce5 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/index.js b/packages/wallet-utils/dist/esm/core/src/lib/services/index.js new file mode 100644 index 000000000..5301a0f98 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/index.js @@ -0,0 +1,11 @@ +export * from "./provider/provider.service"; +export * from "./provider/provider.service.types"; +export * from "./storage/storage.service.types"; +export * from "./storage/json-storage.service.types"; +export * from "./storage/json-storage.service"; +export * from "./storage/web-storage.service"; +export * from "./logger/logger.service"; +export * from "./logger/logger.service.types"; +export * from "./wallet-modules/wallet-modules.service"; +export * from "./event-emitter/event-emitter.service"; +export * from "./event-emitter/event-emitter.types"; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.d.ts new file mode 100644 index 000000000..305cafb84 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.d.ts @@ -0,0 +1,13 @@ +import type { LoggerService } from "./logger.service.types"; +export declare class Logger implements LoggerService { + static debug: boolean; + namespace?: string; + constructor(namespace?: string); + private emit; + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +export declare const logger: Logger; +//# sourceMappingURL=logger.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map new file mode 100644 index 000000000..3819238b2 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,MAAO,YAAW,aAAa;IAC1C,MAAM,CAAC,KAAK,UAAS;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,IAAI;IAgBZ,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI7B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAI9B,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;CAGhC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.js b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.js new file mode 100644 index 000000000..d1ca57bc4 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.js @@ -0,0 +1,32 @@ +export class Logger { + static debug = false; + namespace; + constructor(namespace) { + this.namespace = namespace; + } + emit(method, ...params) { + if (!Logger.debug) { + return; + } + if (this.namespace && method !== "error") { + // eslint-disable-next-line no-console + console[method](this.namespace, ...params); + return; + } + // eslint-disable-next-line no-console + console[method](...params); + } + log(...params) { + this.emit("log", ...params); + } + info(...params) { + this.emit("info", ...params); + } + warn(...params) { + this.emit("warn", ...params); + } + error(...params) { + this.emit("error", ...params); + } +} +export const logger = new Logger(); diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts new file mode 100644 index 000000000..8c891f4f2 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts @@ -0,0 +1,7 @@ +export interface LoggerService { + log(...params: Array): void; + info(...params: Array): void; + warn(...params: Array): void; + error(...params: Array): void; +} +//# sourceMappingURL=logger.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map new file mode 100644 index 000000000..0160d352c --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/logger/logger.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.types.js b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/logger/logger.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.d.ts new file mode 100644 index 000000000..07f2954c5 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.d.ts @@ -0,0 +1,13 @@ +import type { AccessKeyView, BlockReference, QueryResponseKind, RpcQueryRequest } from "@near-js/types"; +import type { ProviderService, QueryParams, ViewAccessKeyParams } from "./provider.service.types"; +import type { SignedTransaction } from "@near-js/transactions"; +export declare class Provider implements ProviderService { + private provider; + constructor(urls: Array); + query(paramsOrPath: QueryParams | RpcQueryRequest | string, data?: string): Promise; + viewAccessKey({ accountId, publicKey }: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; + private urlsToProviders; +} +//# sourceMappingURL=provider.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map new file mode 100644 index 000000000..02d2f07b3 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,QAAS,YAAW,eAAe;IAW9C,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAM/B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,EACpD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAQpB,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAS3D,KAAK,CAAC,SAAS,EAAE,cAAc;IAI/B,eAAe,CAAC,iBAAiB,EAAE,iBAAiB;IAIpD,OAAO,CAAC,eAAe;CAKxB"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.js b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.js new file mode 100644 index 000000000..bfcf13b62 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.js @@ -0,0 +1,43 @@ +import { JsonRpcProvider, FailoverRpcProvider } from "@near-js/providers"; +export class Provider { + /* + private provider: JsonRpcProvider; + + constructor(urls: Array) { + this.provider = new JsonRpcProvider( + this.urlsToProviders(urls) + ); + } + */ + provider; + constructor(urls) { + this.provider = new FailoverRpcProvider(this.urlsToProviders(urls)); + } + query(paramsOrPath, data) { + if (typeof paramsOrPath === "string" && data !== undefined) { + return this.provider.query(paramsOrPath, data); + } + else { + return this.provider.query(paramsOrPath); + } + } + viewAccessKey({ accountId, publicKey }) { + return this.query({ + request_type: "view_access_key", + finality: "final", + account_id: accountId, + public_key: publicKey, + }); + } + block(reference) { + return this.provider.block(reference); + } + sendTransaction(signedTransaction) { + return this.provider.sendTransaction(signedTransaction); + } + urlsToProviders(urls) { + return urls && urls.length > 0 + ? urls.map((url) => new JsonRpcProvider({ url })) + : []; + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts new file mode 100644 index 000000000..cba6ca3cd --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts @@ -0,0 +1,16 @@ +import type { AccessKeyView, BlockReference, BlockResult, QueryResponseKind, FinalExecutionOutcome } from "@near-js/types"; +import type { SignedTransaction } from "@near-js/transactions"; +export type QueryParams = { + [key in string]: unknown; +}; +export interface ViewAccessKeyParams { + accountId: string; + publicKey: string; +} +export interface ProviderService { + query(params: QueryParams): Promise; + viewAccessKey(params: ViewAccessKeyParams): Promise; + block(reference: BlockReference): Promise; + sendTransaction(signedTransaction: SignedTransaction): Promise; +} +//# sourceMappingURL=provider.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map new file mode 100644 index 000000000..94a2e9755 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"provider.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/provider/provider.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;KAAG,GAAG,IAAI,MAAM,GAAG,OAAO;CAAE,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EACtC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,eAAe,CACb,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.types.js b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/provider/provider.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts new file mode 100644 index 000000000..8e5c8063a --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts @@ -0,0 +1,12 @@ +import type { StorageService } from "./storage.service.types"; +import type { JsonStorageService } from "./json-storage.service.types"; +export declare class JsonStorage implements JsonStorageService { + storage: StorageService; + namespace: string; + constructor(storage: StorageService, namespace: string | Array); + private resolveKey; + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map new file mode 100644 index 000000000..9cf929933 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,qBAAa,WAAY,YAAW,kBAAkB;IACpD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAOtE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.js b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.js new file mode 100644 index 000000000..a9175d614 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.js @@ -0,0 +1,25 @@ +const KEY_DELIMITER = ":"; +export class JsonStorage { + storage; + namespace; + constructor(storage, namespace) { + this.storage = storage; + this.namespace = Array.isArray(namespace) + ? namespace.join(KEY_DELIMITER) + : namespace; + } + resolveKey(key) { + return [this.namespace, key].join(KEY_DELIMITER); + } + getItem(key) { + return this.storage.getItem(this.resolveKey(key)).then((item) => { + return typeof item === "string" ? JSON.parse(item) : null; + }); + } + setItem(key, value) { + return this.storage.setItem(this.resolveKey(key), JSON.stringify(value)); + } + removeItem(key) { + return this.storage.removeItem(this.resolveKey(key)); + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts new file mode 100644 index 000000000..0cfff07a0 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface JsonStorageService { + getItem(key: string): Promise; + setItem(key: string, value: Value): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=json-storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map new file mode 100644 index 000000000..00ce8794a --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"json-storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/json-storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.types.js b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/json-storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts new file mode 100644 index 000000000..64ff2e6d3 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts @@ -0,0 +1,6 @@ +export interface StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=storage.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map new file mode 100644 index 000000000..afbf46e25 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/storage.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"storage.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/storage.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/storage.service.types.js b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/storage.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/storage.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts new file mode 100644 index 000000000..f13fefc9a --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts @@ -0,0 +1,7 @@ +import type { StorageService } from "./storage.service.types"; +export declare class WebStorageService implements StorageService { + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; +} +//# sourceMappingURL=web-storage.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map new file mode 100644 index 000000000..fbed55367 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/web-storage.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"web-storage.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/storage/web-storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/storage/web-storage.service.js b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/web-storage.service.js new file mode 100644 index 000000000..3b6ee32f5 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/storage/web-storage.service.js @@ -0,0 +1,20 @@ +export class WebStorageService { + getItem(key) { + return new Promise((resolve) => { + const value = localStorage.getItem(key); + resolve(value); + }); + } + setItem(key, value) { + return new Promise((resolve) => { + localStorage.setItem(key, value); + resolve(); + }); + } + removeItem(key) { + return new Promise((resolve) => { + localStorage.removeItem(key); + resolve(); + }); + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts new file mode 100644 index 000000000..28c9880c2 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts @@ -0,0 +1,27 @@ +import type { WalletModulesParams } from "./wallet-modules.service.types"; +import type { Wallet } from "../../wallet"; +export declare class WalletModules { + private factories; + private storage; + private options; + private store; + private emitter; + private provider; + private modules; + private instances; + constructor({ factories, storage, options, store, emitter, provider, }: WalletModulesParams); + private validateWallet; + private resolveStorageState; + private setWalletAsRecentlySignedIn; + private signOutWallet; + private onWalletSignedIn; + private onWalletSignedOut; + private setupWalletEmitter; + private validateSignMessageParams; + private decorateWallet; + private setupInstance; + private getModule; + getWallet(id: string | null): Promise; + setup(): Promise; +} +//# sourceMappingURL=wallet-modules.service.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map new file mode 100644 index 000000000..94b2e90a9 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAEV,MAAM,EAOP,MAAM,cAAc,CAAC;AAmBtB,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAkB;IAElC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAA6C;gBAElD,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB;YAYR,cAAc;YAkBd,mBAAmB;YAyEnB,2BAA2B;YAuB3B,aAAa;YAYb,gBAAgB;IAkD9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,cAAc;YAsCR,aAAa;IA6B3B,OAAO,CAAC,SAAS;IAIX,SAAS,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB9D,KAAK;CAkFZ"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js new file mode 100644 index 000000000..d5aa498d4 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.js @@ -0,0 +1,321 @@ +import { EventEmitter } from "../event-emitter/event-emitter.service"; +import { Logger, logger } from "../logger/logger.service"; +import { RECENTLY_SIGNED_IN_WALLETS, PACKAGE_NAME, PENDING_CONTRACT, PENDING_SELECTED_WALLET_ID, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "../../constants"; +import { JsonStorage } from "../storage/json-storage.service"; +export class WalletModules { + factories; + storage; + options; + store; + emitter; + provider; + modules; + instances; + constructor({ factories, storage, options, store, emitter, provider, }) { + this.factories = factories; + this.storage = storage; + this.options = options; + this.store = store; + this.emitter = emitter; + this.provider = provider; + this.modules = []; + this.instances = {}; + } + async validateWallet(id) { + let accounts = []; + const wallet = await this.getWallet(id); + if (wallet) { + // Ensure our persistent state aligns with the selected wallet. + // For example a wallet is selected, but it returns no accounts (not signed in). + accounts = await wallet.getAccounts().catch((err) => { + logger.log(`Failed to validate ${wallet.id} during setup`); + logger.error(err); + return []; + }); + } + return accounts; + } + async resolveStorageState() { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const pendingSelectedWalletId = await jsonStorage.getItem(PENDING_SELECTED_WALLET_ID); + const pendingContract = await jsonStorage.getItem(PENDING_CONTRACT); + const rememberRecentWallets = await jsonStorage.getItem(REMEMBER_RECENT_WALLETS); + if (pendingSelectedWalletId && pendingContract) { + const accounts = await this.validateWallet(pendingSelectedWalletId); + await jsonStorage.removeItem(PENDING_SELECTED_WALLET_ID); + await jsonStorage.removeItem(PENDING_CONTRACT); + if (accounts.length) { + const { selectedWalletId } = this.store.getState(); + const selectedWallet = await this.getWallet(selectedWalletId); + if (selectedWallet && pendingSelectedWalletId !== selectedWalletId) { + await selectedWallet.signOut().catch((err) => { + logger.log("Failed to sign out existing wallet"); + logger.error(err); + }); + } + let recentlySignedInWalletsFromPending = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWalletsFromPending = + await this.setWalletAsRecentlySignedIn(pendingSelectedWalletId); + } + return { + accounts, + contract: pendingContract, + selectedWalletId: pendingSelectedWalletId, + recentlySignedInWallets: recentlySignedInWalletsFromPending, + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + } + const { contract, selectedWalletId } = this.store.getState(); + const accounts = await this.validateWallet(selectedWalletId); + const recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!accounts.length) { + return { + accounts: [], + contract: null, + selectedWalletId: null, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + return { + accounts, + contract, + selectedWalletId, + recentlySignedInWallets: recentlySignedInWallets || [], + rememberRecentWallets: rememberRecentWallets || REMEMBER_RECENT_WALLETS_STATE.ENABLED, + }; + } + async setWalletAsRecentlySignedIn(walletId) { + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + let recentlySignedInWallets = await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS); + if (!recentlySignedInWallets) { + recentlySignedInWallets = []; + } + if (!recentlySignedInWallets.includes(walletId)) { + recentlySignedInWallets.unshift(walletId); + recentlySignedInWallets = recentlySignedInWallets.slice(0, 5); + await jsonStorage.setItem(RECENTLY_SIGNED_IN_WALLETS, recentlySignedInWallets); + } + return recentlySignedInWallets; + } + async signOutWallet(walletId) { + const wallet = (await this.getWallet(walletId)); + await wallet.signOut().catch((err) => { + logger.log(`Failed to sign out ${wallet.id}`); + logger.error(err); + // At least clean up state on our side. + this.onWalletSignedOut(wallet.id); + }); + } + async onWalletSignedIn(walletId, { accounts, contractId, methodNames }) { + const { selectedWalletId, rememberRecentWallets } = this.store.getState(); + const jsonStorage = new JsonStorage(this.storage, PACKAGE_NAME); + const contract = { contractId, methodNames }; + if (!accounts.length) { + const module = this.getModule(walletId); + // We can't guarantee the user will actually sign in with browser wallets. + // Best we can do is set in storage and validate on init. + if (module.type === "browser") { + await jsonStorage.setItem(PENDING_SELECTED_WALLET_ID, walletId); + await jsonStorage.setItem(PENDING_CONTRACT, contract); + } + return; + } + if (selectedWalletId && selectedWalletId !== walletId) { + await this.signOutWallet(selectedWalletId); + } + let recentlySignedInWallets = []; + if (rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED) { + recentlySignedInWallets = await this.setWalletAsRecentlySignedIn(walletId); + } + this.store.dispatch({ + type: "WALLET_CONNECTED", + payload: { + walletId, + contract, + accounts, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + this.emitter.emit("signedIn", { + walletId, + contractId, + methodNames, + accounts, + }); + } + onWalletSignedOut(walletId) { + this.store.dispatch({ + type: "WALLET_DISCONNECTED", + payload: { walletId }, + }); + this.emitter.emit("signedOut", { walletId }); + } + setupWalletEmitter(module) { + const emitter = new EventEmitter(); + emitter.on("signedOut", () => { + this.onWalletSignedOut(module.id); + }); + emitter.on("signedIn", (event) => { + this.onWalletSignedIn(module.id, event); + }); + emitter.on("accountsChanged", async ({ accounts }) => { + this.emitter.emit("accountsChanged", { walletId: module.id, accounts }); + if (!accounts.length) { + return this.signOutWallet(module.id); + } + this.store.dispatch({ + type: "ACCOUNTS_CHANGED", + payload: { walletId: module.id, accounts }, + }); + }); + emitter.on("networkChanged", ({ networkId }) => { + this.emitter.emit("networkChanged", { walletId: module.id, networkId }); + }); + emitter.on("uriChanged", ({ uri }) => { + this.emitter.emit("uriChanged", { walletId: module.id, uri }); + }); + return emitter; + } + validateSignMessageParams({ message, nonce, recipient, }) { + if (!message || message.trim() === "") { + throw new Error("Invalid message. It must be a non-empty string."); + } + if (!Buffer.isBuffer(nonce) || nonce.length !== 32) { + throw new Error("Invalid nonce. It must be a Buffer with a length of 32 bytes."); + } + if (!recipient || recipient.trim() === "") { + throw new Error("Invalid recipient. It must be a non-empty string."); + } + } + decorateWallet(wallet) { + const _signIn = wallet.signIn; + const _signOut = wallet.signOut; + const _signMessage = wallet.signMessage; + wallet.signIn = async (params) => { + const accounts = await _signIn(params); + const { contractId, methodNames = [] } = params; + await this.onWalletSignedIn(wallet.id, { + accounts, + contractId, + methodNames, + }); + return accounts; + }; + wallet.signOut = async () => { + await _signOut(); + this.onWalletSignedOut(wallet.id); + }; + wallet.signMessage = async (params) => { + if (_signMessage === undefined) { + throw Error(`The signMessage method is not supported by ${wallet.metadata.name}`); + } + this.validateSignMessageParams(params); + return await _signMessage(params); + }; + return wallet; + } + async setupInstance(module) { + if (!module.metadata.available) { + const message = module.type === "injected" ? "not installed" : "not available"; + throw Error(`${module.metadata.name} is ${message}`); + } + const wallet = { + id: module.id, + type: module.type, + metadata: module.metadata, + ...(await module.init({ + id: module.id, + type: module.type, + metadata: module.metadata, + options: this.options, + store: this.store.toReadOnly(), + provider: this.provider, + emitter: this.setupWalletEmitter(module), + logger: new Logger(module.id), + storage: new JsonStorage(this.storage, [PACKAGE_NAME, module.id]), + })), + }; + return this.decorateWallet(wallet); + } + getModule(id) { + return this.modules.find((x) => x.id === id); + } + async getWallet(id) { + const module = this.getModule(id); + if (!module) { + return null; + } + const { selectedWalletId } = this.store.getState(); + // If user uninstalled/removed a wallet which was previously signed in with + // best we can do is clean up state on our side. + if (!module.metadata.available && selectedWalletId) { + this.onWalletSignedOut(selectedWalletId); + return null; + } + return (await module.wallet()); + } + async setup() { + const modules = []; + for (let i = 0; i < this.factories.length; i += 1) { + const module = await this.factories[i]({ options: this.options }).catch((err) => { + logger.log("Failed to setup module"); + logger.error(err); + return null; + }); + // Filter out wallets that aren't available. + if (!module) { + continue; + } + // Skip duplicated module. + if (modules.some((x) => x.id === module.id)) { + continue; + } + modules.push({ + id: module.id, + type: module.type, + metadata: module.metadata, + wallet: async () => { + let instance = this.instances[module.id]; + if (instance) { + return instance; + } + instance = await this.setupInstance(module); + this.instances[module.id] = instance; + return instance; + }, + }); + } + this.modules = modules; + const { accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = await this.resolveStorageState(); + this.store.dispatch({ + type: "SETUP_WALLET_MODULES", + payload: { + modules, + accounts, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }, + }); + for (let i = 0; i < this.modules.length; i++) { + if (this.modules[i].type !== "instant-link") { + continue; + } + const wallet = (await this.modules[i].wallet()); + if (!wallet.metadata.runOnStartup) { + continue; + } + try { + await wallet.signIn({ contractId: wallet.getContractId() }); + } + catch (err) { + logger.error("Failed to sign in to wallet. " + err); + } + } + } +} diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts new file mode 100644 index 000000000..339f296e7 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts @@ -0,0 +1,16 @@ +import type { WalletModuleFactory } from "../../wallet"; +import type { StorageService } from "../storage/storage.service.types"; +import type { Options } from "../../options.types"; +import type { Store } from "../../store.types"; +import type { EventEmitter } from "../event-emitter/event-emitter.service"; +import type { WalletSelectorEvents } from "../../wallet-selector.types"; +import type { ProviderService } from "../provider/provider.service.types"; +export interface WalletModulesParams { + factories: Array; + storage: StorageService; + options: Options; + store: Store; + emitter: EventEmitter; + provider: ProviderService; +} +//# sourceMappingURL=wallet-modules.service.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map new file mode 100644 index 000000000..231a8d586 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-modules.service.types.d.ts","sourceRoot":"","sources":["../../../../../../../../core/src/lib/services/wallet-modules/wallet-modules.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAC5C,QAAQ,EAAE,eAAe,CAAC;CAC3B"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/services/wallet-modules/wallet-modules.service.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/store.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/store.d.ts new file mode 100644 index 000000000..dd8b9c03c --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/store.d.ts @@ -0,0 +1,4 @@ +import type { StorageService } from "./services"; +import type { Store } from "./store.types"; +export declare const createStore: (storage: StorageService) => Promise; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/store.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/store.d.ts.map new file mode 100644 index 000000000..d1628d160 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EACV,KAAK,EAGN,MAAM,eAAe,CAAC;AA+JvB,eAAO,MAAM,WAAW,YAAmB,cAAc,KAAG,OAAO,CAAC,KAAK,CAgExE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/store.js b/packages/wallet-utils/dist/esm/core/src/lib/store.js new file mode 100644 index 000000000..32dc79078 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/store.js @@ -0,0 +1,154 @@ +import { Subject, BehaviorSubject, scan } from "rxjs"; +import { logger, JsonStorage } from "./services"; +import { PACKAGE_NAME, CONTRACT, SELECTED_WALLET_ID, RECENTLY_SIGNED_IN_WALLETS, REMEMBER_RECENT_WALLETS, REMEMBER_RECENT_WALLETS_STATE, } from "./constants"; +const reducer = (state, action) => { + logger.log("Store Action", action); + switch (action.type) { + case "SETUP_WALLET_MODULES": { + const { modules, accounts, contract, selectedWalletId, recentlySignedInWallets, rememberRecentWallets, } = action.payload; + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === 0, + }; + }); + return { + ...state, + modules, + accounts: accountStates, + contract, + selectedWalletId, + recentlySignedInWallets, + rememberRecentWallets, + }; + } + case "WALLET_CONNECTED": { + const { walletId, contract, accounts, recentlySignedInWallets } = action.payload; + if (!accounts.length) { + return state; + } + const activeAccountIndex = state.accounts.findIndex((account) => account.active); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: i === (activeAccountIndex > -1 ? activeAccountIndex : 0), + }; + }); + return { + ...state, + contract, + accounts: accountStates, + selectedWalletId: walletId, + recentlySignedInWallets, + }; + } + case "WALLET_DISCONNECTED": { + const { walletId } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + return { + ...state, + contract: null, + accounts: [], + selectedWalletId: null, + }; + } + case "ACCOUNTS_CHANGED": { + const { walletId, accounts } = action.payload; + if (walletId !== state.selectedWalletId) { + return state; + } + const activeAccount = state.accounts.find((account) => account.active); + const isActiveAccountRemoved = !accounts.some((account) => account.accountId === activeAccount?.accountId); + const accountStates = accounts.map((account, i) => { + return { + ...account, + active: isActiveAccountRemoved + ? i === 0 + : account.accountId === activeAccount?.accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_ACTIVE_ACCOUNT": { + const { accountId } = action.payload; + const accountStates = state.accounts.map((account) => { + return { + ...account, + active: account.accountId === accountId, + }; + }); + return { + ...state, + accounts: accountStates, + }; + } + case "SET_REMEMBER_RECENT_WALLETS": { + const { selectedWalletId, recentlySignedInWallets } = state; + const { rememberRecentWallets } = action.payload; + const newRecentWallets = rememberRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? REMEMBER_RECENT_WALLETS_STATE.DISABLED + : REMEMBER_RECENT_WALLETS_STATE.ENABLED; + const newWalletsVal = [...recentlySignedInWallets]; + if (selectedWalletId && + !recentlySignedInWallets.includes(selectedWalletId)) { + newWalletsVal.push(selectedWalletId); + } + const newRecentlySignedInWallets = newRecentWallets === REMEMBER_RECENT_WALLETS_STATE.ENABLED + ? newWalletsVal + : []; + return { + ...state, + rememberRecentWallets: newRecentWallets, + recentlySignedInWallets: newRecentlySignedInWallets, + }; + } + default: + return state; + } +}; +export const createStore = async (storage) => { + const jsonStorage = new JsonStorage(storage, PACKAGE_NAME); + const initialState = { + modules: [], + accounts: [], + contract: await jsonStorage.getItem(CONTRACT), + selectedWalletId: await jsonStorage.getItem(SELECTED_WALLET_ID), + recentlySignedInWallets: (await jsonStorage.getItem(RECENTLY_SIGNED_IN_WALLETS)) || [], + rememberRecentWallets: (await jsonStorage.getItem(REMEMBER_RECENT_WALLETS)) || "", + }; + const state$ = new BehaviorSubject(initialState); + const actions$ = new Subject(); + actions$.pipe(scan(reducer, initialState)).subscribe(state$); + const syncStorage = async (prevState, state, storageKey, property) => { + if (state[property] === prevState[property]) { + return; + } + if (state[property]) { + await jsonStorage.setItem(storageKey, state[property]); + return; + } + await jsonStorage.removeItem(storageKey); + }; + let prevState = state$.getValue(); + state$.subscribe((state) => { + syncStorage(prevState, state, SELECTED_WALLET_ID, "selectedWalletId"); + syncStorage(prevState, state, CONTRACT, "contract"); + syncStorage(prevState, state, RECENTLY_SIGNED_IN_WALLETS, "recentlySignedInWallets"); + syncStorage(prevState, state, REMEMBER_RECENT_WALLETS, "rememberRecentWallets"); + prevState = state; + }); + return { + observable: state$, + getState: () => state$.getValue(), + dispatch: (action) => actions$.next(action), + toReadOnly: () => ({ + getState: () => state$.getValue(), + observable: state$.asObservable(), + }), + }; +}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/store.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/store.types.d.ts new file mode 100644 index 000000000..3d93e104e --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/store.types.d.ts @@ -0,0 +1,121 @@ +import type { BehaviorSubject, Observable } from "rxjs"; +import type { Wallet, Account } from "./wallet"; +import type { SignMessageMethod } from "./wallet"; +export interface ContractState { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * List of methods that can only be invoked on the Smart Contract. Empty list means no restriction. + */ + methodNames: Array; +} +export type ModuleState = { + /** + * Unique identifier for the wallet. + */ + id: Variation["id"]; + /** + * Type of the wallet. + */ + type: Variation["type"]; + /** + * Meta information about the wallet. + */ + metadata: Variation["metadata"]; + /** + * Access functionality of the wallet. + */ + wallet(): Promise; +}; +export type AccountState = Account & { + /** + * Is account set as active. + */ + active: boolean; +}; +export interface WalletSelectorState { + /** + * Returns the signed in contract. + */ + contract: ContractState | null; + /** + * Returns the list of available modules. + */ + modules: Array; + /** + * Returns the list of signed in accounts. + */ + accounts: Array; + /** + * Returns the ID of the selected wallet. + */ + selectedWalletId: string | null; + /** + * Returns ID-s of 5 recently signed in wallets. + */ + recentlySignedInWallets: Array; + /** + * Returns a string, which indicates if the functionality about recentlySignedInWallets is active. + */ + rememberRecentWallets: string; +} +export type WalletSelectorAction = { + type: "SETUP_WALLET_MODULES"; + payload: { + modules: Array; + accounts: Array; + contract: ContractState | null; + selectedWalletId: string | null; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_CONNECTED"; + payload: { + walletId: string; + contract: ContractState; + accounts: Array; + recentlySignedInWallets: Array; + rememberRecentWallets: string; + }; +} | { + type: "WALLET_DISCONNECTED"; + payload: { + walletId: string; + }; +} | { + type: "ACCOUNTS_CHANGED"; + payload: { + walletId: string; + accounts: Array; + }; +} | { + type: "SET_ACTIVE_ACCOUNT"; + payload: { + accountId: string; + }; +} | { + type: "SET_REMEMBER_RECENT_WALLETS"; + payload: { + rememberRecentWallets: string; + }; +}; +export interface ReadOnlyStore { + /** + * Retrieve the current state. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + getState(): WalletSelectorState; + /** + * Subscribe to state changes using the (RxJS) Observable pattern. You can find more information on `WalletSelectorState` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/state.md | here}. + */ + observable: Observable; +} +export interface Store { + observable: BehaviorSubject; + getState(): WalletSelectorState; + dispatch(action: WalletSelectorAction): void; + toReadOnly(): ReadOnlyStore; +} +//# sourceMappingURL=store.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/store.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/store.types.d.ts.map new file mode 100644 index 000000000..5854551fa --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/store.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/store.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/store.types.js b/packages/wallet-utils/dist/esm/core/src/lib/store.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/store.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/testUtils.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/testUtils.d.ts new file mode 100644 index 000000000..ace50a39a --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/testUtils.d.ts @@ -0,0 +1,12 @@ +import type { WalletModuleFactory, Wallet } from "./wallet"; +import type { ProviderService, StorageService } from "./services"; +import type { Options } from "./options.types"; +export interface MockWalletDependencies { + options?: Options; + provider?: ProviderService; +} +export declare const mockWallet: (factory: WalletModuleFactory, deps?: MockWalletDependencies) => Promise<{ + wallet: Variation; + storage: StorageService; +}>; +//# sourceMappingURL=testUtils.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/testUtils.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/testUtils.d.ts.map new file mode 100644 index 000000000..dbc9d8f55 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/testUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/testUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmB/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,SAAS,MAAM,WAC9C,mBAAmB,SACrB,sBAAsB;;;EA4B9B,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/testUtils.js b/packages/wallet-utils/dist/esm/core/src/lib/testUtils.js new file mode 100644 index 000000000..7e90e1ce8 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/testUtils.js @@ -0,0 +1,103 @@ +// Remove Jest import +// import * as jest from "jest"; +import { mock } from "jest-mock-extended"; +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, WalletModules } from "./services"; +const createStorageMock = () => { + const _state = {}; + return { + getItem: async (key) => _state[key] || null, // Replace jest.fn() with plain async functions + setItem: async (key, value) => { + _state[key] = value; + }, + removeItem: async (key) => { + delete _state[key]; + }, + }; +}; +export const mockWallet = async (factory, deps) => { + const { options, storage } = resolveOptions({ + network: getNetworkPreset("testnet"), + storage: createStorageMock(), + modules: [factory], + ...deps?.options, + }); + const emitter = new EventEmitter(); + const store = await createStore(storage); + const walletModules = new WalletModules({ + factories: [factory], + storage, + options, + store, + emitter, + provider: deps?.provider || mock(), + }); + await walletModules.setup(); + const { modules } = store.getState(); + const wallet = await walletModules.getWallet(modules[0].id); + return { + wallet: wallet, + storage, + }; +}; +// import * as jest from "jest" +// import { mock } from "jest-mock-extended"; +// import type { WalletModuleFactory, Wallet } from "./wallet"; +// import type { ProviderService, StorageService } from "./services"; +// import type { WalletSelectorEvents } from "./wallet-selector.types"; +// import type { Options } from "./options.types"; +// import { getNetworkPreset, resolveOptions } from "./options"; +// import { createStore } from "./store"; +// import { EventEmitter, WalletModules } from "./services"; +// +// const createStorageMock = (): StorageService => { +// const _state: Record = {}; +// +// return { +// getItem: jest.fn(async (key) => _state[key] || null), +// setItem: jest.fn(async (key, value) => { +// _state[key] = value; +// }), +// removeItem: jest.fn(async (key) => { +// delete _state[key]; +// }), +// }; +// }; +// +// export interface MockWalletDependencies { +// options?: Options; +// provider?: ProviderService; +// } +// +// export const mockWallet = async ( +// factory: WalletModuleFactory, +// deps?: MockWalletDependencies +// ) => { +// const { options, storage } = resolveOptions({ +// network: getNetworkPreset("testnet"), +// storage: createStorageMock(), +// modules: [factory], +// ...deps?.options, +// }); +// const emitter = new EventEmitter(); +// const store = await createStore(storage); +// const walletModules = new WalletModules({ +// factories: [factory], +// storage, +// options, +// store, +// emitter, +// provider: deps?.provider || mock(), +// }); +// +// await walletModules.setup(); +// +// const { modules } = store.getState(); +// const wallet = await walletModules.getWallet(modules[0].id); +// +// return { +// wallet: wallet!, +// storage, +// }; +// }; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/translate/translate.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/translate/translate.d.ts new file mode 100644 index 000000000..8706ed5a9 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/translate/translate.d.ts @@ -0,0 +1,4 @@ +export type SupportedLanguage = "en" | "es" | "zh" | "bg" | "ko" | "vi" | "hi" | "ar" | "hr" | "mk" | "sl" | "sr"; +export declare const allowOnlyLanguage: (langCode: SupportedLanguage | undefined) => void; +export declare const translate: (path: string) => string; +//# sourceMappingURL=translate.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/translate/translate.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/translate/translate.d.ts.map new file mode 100644 index 000000000..b2ac2d105 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/translate/translate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/translate/translate.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAGT,eAAO,MAAM,iBAAiB,aAAc,iBAAiB,GAAG,SAAS,SAExE,CAAC;AAuBF,eAAO,MAAM,SAAS,SAAU,MAAM,WAarC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/translate/translate.js b/packages/wallet-utils/dist/esm/core/src/lib/translate/translate.js new file mode 100644 index 000000000..610c02a94 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/translate/translate.js @@ -0,0 +1,73 @@ +import en from "../locale/en.json"; +import es from "../locale/es.json"; +import zh from "../locale/zh.json"; +import bg from "../locale/bg.json"; +import ko from "../locale/ko.json"; +import vi from "../locale/vi.json"; +import hi from "../locale/hi.json"; +import ar from "../locale/ar.json"; +import hr from "../locale/hr.json"; +import mk from "../locale/mk.json"; +import sl from "../locale/sl.json"; +import sr from "../locale/sr.json"; +const getLanguage = (languageCode) => { + switch (languageCode) { + case "en": + return en; + case "es": + return es; + case "zh": + return zh; + case "bg": + return bg; + case "ko": + return ko; + case "vi": + return vi; + case "hi": + return hi; + case "ar": + return ar; + case "hr": + return hr; + case "mk": + return mk; + case "sl": + return sl; + case "sr": + return sr; + default: + return en; + } +}; +let chosenLang; +export const allowOnlyLanguage = (langCode) => { + chosenLang = langCode; +}; +// (i.e en-CA returns just en) +const shortenLanguageCode = (lang) => { + return lang.indexOf("-") !== -1 ? lang.split("-")[0] : lang.split("_")[0]; +}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const findObjectPropByStringPath = (obj, prop) => { + if (!obj) { + return ""; + } + const _index = prop.indexOf("."); + if (_index > -1) { + const currentProp = prop.substring(0, _index); + const nextProp = prop.substring(_index + 1); + return findObjectPropByStringPath(obj[currentProp], nextProp); + } + return obj[prop]; +}; +export const translate = (path) => { + let browserLang = window.navigator.languages + ? window.navigator.languages[0] + : null; + browserLang = browserLang || window.navigator.language; + const languageCode = shortenLanguageCode(chosenLang || browserLang); + const selectedLanguage = getLanguage(languageCode); + const text = findObjectPropByStringPath(selectedLanguage, path); + return text && typeof text === "string" ? text : path; +}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/utils.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/utils.types.d.ts new file mode 100644 index 000000000..fbcda75c6 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/utils.types.d.ts @@ -0,0 +1,3 @@ +export type Optional = Omit & Partial>; +export type Modify = Omit & R; +//# sourceMappingURL=utils.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/utils.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/utils.types.d.ts.map new file mode 100644 index 000000000..0c4119292 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/utils.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/utils.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/utils.types.js b/packages/wallet-utils/dist/esm/core/src/lib/utils.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/utils.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.d.ts new file mode 100644 index 000000000..8dd8656b7 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.d.ts @@ -0,0 +1,8 @@ +import type { WalletSelector, WalletSelectorParams } from "./wallet-selector.types"; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export declare const setupWalletSelector: (params: WalletSelectorParams) => Promise; +//# sourceMappingURL=wallet-selector.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.d.ts.map new file mode 100644 index 000000000..e613937ba --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAmEjC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WACtB,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAyCxB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.js b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.js new file mode 100644 index 000000000..af67afbb6 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.js @@ -0,0 +1,79 @@ +import { getNetworkPreset, resolveOptions } from "./options"; +import { createStore } from "./store"; +import { EventEmitter, Logger, WalletModules, Provider } from "./services"; +let walletSelectorInstance = null; +const createSelector = (options, store, walletModules, emitter) => { + return { + options, + store: store.toReadOnly(), + wallet: async (id) => { + const { selectedWalletId } = store.getState(); + const wallet = await walletModules.getWallet(id || selectedWalletId); + if (!wallet) { + if (id) { + throw new Error("Invalid wallet id"); + } + throw new Error("No wallet selected"); + } + return wallet; + }, + setActiveAccount: (accountId) => { + const { accounts } = store.getState(); + if (!accounts.some((account) => account.accountId === accountId)) { + throw new Error("Invalid account id"); + } + store.dispatch({ + type: "SET_ACTIVE_ACCOUNT", + payload: { accountId }, + }); + }, + setRememberRecentWallets: () => { + const { rememberRecentWallets } = store.getState(); + store.dispatch({ + type: "SET_REMEMBER_RECENT_WALLETS", + payload: { rememberRecentWallets }, + }); + }, + isSignedIn() { + const { accounts } = store.getState(); + return Boolean(accounts.length); + }, + on: (eventName, callback) => { + return emitter.on(eventName, callback); + }, + off: (eventName, callback) => { + emitter.off(eventName, callback); + }, + }; +}; +/** + * Initiates a wallet selector instance + * @param {WalletSelectorParams} params Selector parameters (network, modules...) + * @returns {Promise} Returns a WalletSelector object + */ +export const setupWalletSelector = async (params) => { + const { options, storage } = resolveOptions(params); + Logger.debug = options.debug; + const emitter = new EventEmitter(); + const store = await createStore(storage); + const network = await getNetworkPreset(options.network.networkId, params.fallbackRpcUrls); + const rpcProviderUrls = params.fallbackRpcUrls && params.fallbackRpcUrls.length > 0 + ? params.fallbackRpcUrls + : [network.nodeUrl]; + const walletModules = new WalletModules({ + factories: params.modules, + storage, + options, + store, + emitter, + provider: new Provider(rpcProviderUrls), + }); + await walletModules.setup(); + if (params.allowMultipleSelectors) { + return createSelector(options, store, walletModules, emitter); + } + if (!walletSelectorInstance) { + walletSelectorInstance = createSelector(options, store, walletModules, emitter); + } + return walletSelectorInstance; +}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.types.d.ts new file mode 100644 index 000000000..327a9db79 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.types.d.ts @@ -0,0 +1,109 @@ +import type { Account, Wallet, WalletModuleFactory } from "./wallet/wallet.types"; +import type { ReadOnlyStore } from "./store.types"; +import type { Network, NetworkId, Options } from "./options.types"; +import type { Subscription, StorageService } from "./services"; +import type { SupportedLanguage } from "./translate/translate"; +import type { SignMessageMethod } from "./wallet/wallet.types"; +export interface WalletSelectorParams { + /** + * Resolved network configuration. + */ + network: NetworkId | Network; + /** + * List of wallet module factory functions + */ + modules: Array; + /** + * Custom storage service + */ + storage?: StorageService; + /** + * Whether internal logging is enabled. + */ + debug?: boolean; + /** + * Whether wallet order optimization is enabled. + */ + optimizeWalletOrder?: boolean; + /** + * Wether to allow multiple wallet selector instances to be created. + */ + allowMultipleSelectors?: boolean; + /** + * Weather wallet order randomization is enabled. + */ + randomizeWalletOrder?: boolean; + /** + * ISO 639-1 two-letter language code. + */ + languageCode?: SupportedLanguage; + /** + * The URL where DelegateActions are sent by meta transaction enabled wallet modules. + */ + relayerUrl?: string; + /** + * Whether multiple RPC URLs are included, used for the FailoverRpcProvider. + */ + fallbackRpcUrls?: Array; +} +export type WalletSelectorStore = ReadOnlyStore; +export type WalletSelectorEvents = { + signedIn: { + walletId: string; + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: { + walletId: string; + }; + accountsChanged: { + walletId: string; + accounts: Array; + }; + networkChanged: { + walletId: string; + networkId: string; + }; + uriChanged: { + walletId: string; + uri: string; + }; +}; +export interface WalletSelector { + /** + * Resolved variation of the options passed to `setupWalletSelector`. + */ + options: Options; + /** + * Wallet selector storage service + */ + store: WalletSelectorStore; + /** + * Programmatically access wallets and call their methods. + * It's advised to use `state.modules` if you only need access to `id`, `type` or `metadata` as it avoids initialising. + * You can find more information on Wallet {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/wallet.md | here}. + */ + wallet(id?: string): Promise; + /** + * Determines whether we're signed in to one or more accounts. + */ + isSignedIn(): boolean; + /** + * Programmatically change active account which will be used to sign and send transactions. + */ + setActiveAccount(accountId: string): void; + /** + * Programmatically changes the rememberRecentWallets behavior, it can deactivate and activate rememberRecentWallets. + */ + setRememberRecentWallets(): void; + /** + * Attach an event handler to important events. + */ + on(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): Subscription; + /** + * Removes the event handler attached to the given `event`. + */ + off(eventName: EventName, callback: (event: WalletSelectorEvents[EventName]) => void): void; +} +//# sourceMappingURL=wallet-selector.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.types.d.ts.map new file mode 100644 index 000000000..2ab329a5f --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-selector.types.d.ts","sourceRoot":"","sources":["../../../../../../core/src/lib/wallet-selector.types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.types.js b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet-selector.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet/index.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/wallet/index.d.ts new file mode 100644 index 000000000..df9c381db --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet/index.d.ts @@ -0,0 +1,3 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet/index.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/wallet/index.d.ts.map new file mode 100644 index 000000000..223147a0a --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet/index.js b/packages/wallet-utils/dist/esm/core/src/lib/wallet/index.js new file mode 100644 index 000000000..bd35cba8b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet/index.js @@ -0,0 +1,2 @@ +export * from "./wallet.types"; +export * from "./transactions.types"; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet/transactions.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/wallet/transactions.types.d.ts new file mode 100644 index 000000000..edbe827c4 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet/transactions.types.d.ts @@ -0,0 +1,66 @@ +export interface CreateAccountAction { + type: "CreateAccount"; +} +export interface DeployContractAction { + type: "DeployContract"; + params: { + code: Uint8Array; + }; +} +export interface FunctionCallAction { + type: "FunctionCall"; + params: { + methodName: string; + args: object; + gas: string; + deposit: string; + }; +} +export interface TransferAction { + type: "Transfer"; + params: { + deposit: string; + }; +} +export interface StakeAction { + type: "Stake"; + params: { + stake: string; + publicKey: string; + }; +} +export type AddKeyPermission = "FullAccess" | { + receiverId: string; + allowance?: string; + methodNames?: Array; +}; +export interface AddKeyAction { + type: "AddKey"; + params: { + publicKey: string; + accessKey: { + nonce?: number; + permission: AddKeyPermission; + }; + }; +} +export interface DeleteKeyAction { + type: "DeleteKey"; + params: { + publicKey: string; + }; +} +export interface DeleteAccountAction { + type: "DeleteAccount"; + params: { + beneficiaryId: string; + }; +} +export type Action = CreateAccountAction | DeployContractAction | FunctionCallAction | TransferAction | StakeAction | AddKeyAction | DeleteKeyAction | DeleteAccountAction; +export type ActionType = Action["type"]; +export interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} +//# sourceMappingURL=transactions.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map new file mode 100644 index 000000000..4236471a2 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet/transactions.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transactions.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/transactions.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,gBAAgB,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet/transactions.types.js b/packages/wallet-utils/dist/esm/core/src/lib/wallet/transactions.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet/transactions.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet/wallet.types.d.ts b/packages/wallet-utils/dist/esm/core/src/lib/wallet/wallet.types.d.ts new file mode 100644 index 000000000..ac2631a0c --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet/wallet.types.d.ts @@ -0,0 +1,295 @@ +import type { EventEmitterService, LoggerService, ProviderService, JsonStorageService } from "../services"; +import type { Options } from "../options.types"; +import type { ReadOnlyStore } from "../store.types"; +import type { Transaction, Action } from "./transactions.types"; +import type { Modify, Optional } from "../utils.types"; +import type { FinalExecutionOutcome } from "@near-js/types"; +import { KeyType } from "@near-js/crypto"; +interface BaseWalletMetadata { + /** + * Wallet name. + */ + name: string; + /** + * Wallet description. + */ + description: string | null; + /** + * Wallet icon url. + */ + iconUrl: string; + /** + * Is wallet deprecated. + */ + deprecated: boolean; + /** + * Will the wallet be shown in modal. + */ + available: boolean; +} +export interface Account { + /** + * NEAR account identifier. + */ + accountId: string; + /** + * Account public key. + */ + publicKey?: string; +} +export interface SignInParams { + /** + * Account ID of the Smart Contract. + */ + contractId: string; + /** + * Specify limited access to particular methods on the Smart Contract. + */ + methodNames?: Array; +} +export interface VerifyOwnerParams { + /** + * The message requested sign. Defaults to `verify owner` string. + */ + message: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet). This is the callback url once the signing is approved. Defaults to `window.location.href`. + */ + callbackUrl?: string; + /** + * Applicable to browser wallets (e.g. MyNearWallet) extra data that will be passed to the callback url once the signing is approved. + */ + meta?: string; +} +export interface VerifiedOwner { + accountId: string; + message: string; + blockId: string; + publicKey: string; + signature: string; + keyType: KeyType; +} +export interface SignMessageParams { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} +export interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} +export type SignMessageMethod = { + signMessage(params: SignMessageParams): Promise; +}; +interface SignAndSendTransactionParams { + /** + * Account ID used to sign the transaction. Defaults to the first account. + */ + signerId?: string; + /** + * Account ID to receive the transaction. Defaults to `contractId` defined in `init`. + */ + receiverId?: string; + /** + * NEAR Action(s) to sign and send to the network (e.g. `FunctionCall`). You can find more information on `Action` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + actions: Array; +} +interface SignAndSendTransactionsParams { + /** + * NEAR Transactions(s) to sign and send to the network. You can find more information on `Transaction` {@link https://github.com/near/wallet-selector/blob/main/packages/core/docs/api/transactions.md | here}. + */ + transactions: Array>; +} +interface BaseWalletBehaviour { + /** + * Programmatically sign in. Hardware wallets (e.g. Ledger) require `derivationPaths` to validate access key permissions. + */ + signIn(params: SignInParams): Promise>; + /** + * Sign out from the wallet. + */ + signOut(): Promise; + /** + * Returns one or more accounts when signed in. + * This method can be useful for wallets that support accounts at once such as WalletConnect. + * In this case, you can use an `accountId` returned as the `signerId` for `signAndSendTransaction`. + */ + getAccounts(): Promise>; + /** + * Signs the message and verifies the owner. Message is not sent to blockchain. + */ + verifyOwner(params: VerifyOwnerParams): Promise; + /** + * Signs one or more NEAR Actions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransaction(params: SignAndSendTransactionParams): Promise; + /** + * Signs one or more transactions before sending to the network. + * The user must be signed in to call this method as there's at least charges for gas spent. + */ + signAndSendTransactions(params: SignAndSendTransactionsParams): Promise>; + signMessage?(params: SignMessageParams): Promise; +} +type BaseWallet = { + /** + * Unique identifier of the wallet. + */ + id: string; + /** + * Returns the type of wallet. This is particular useful when using functionality that's wallet specific (see hardware wallet example). + */ + type: Type; + /** + * Returns meta information about the wallet such as `name`, `description`, `iconUrl`, `deprecated` and `available` but can include wallet-specific properties such as `downloadUrl` and `useUrlAccountImport` for injected wallets or `contractId`, `runOnStartup` for instant-link wallets and walletUrl for browser wallets. + */ + metadata: Metadata; +} & Behaviour; +export type WalletEvents = { + signedIn: { + contractId: string; + methodNames: Array; + accounts: Array; + }; + signedOut: null; + accountsChanged: { + accounts: Array; + }; + networkChanged: { + networkId: string; + }; + uriChanged: { + uri: string; + }; +}; +export type BrowserWalletMetadata = BaseWalletMetadata & { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; + /** + * The URL of the wallet exposed in the metadata of the module. + */ + walletUrl: string; +}; +interface BrowserWalletSignInParams extends SignInParams { + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After successfully signing in where to redirect. + */ + successUrl?: string; + /** + * Optional for browser wallets (e.g MyNearWallet and HERE Wallet). After failing to sign in where to redirect. + */ + failureUrl?: string; +} +interface BrowserWalletSignAndSendTransactionParams extends SignAndSendTransactionParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +interface BrowserWalletSignAndSendTransactionsParams extends SignAndSendTransactionsParams { + /** + * Applicable to browser wallets (e.g. MyNearWallet). This the callback url once the transaction is approved. + */ + callbackUrl?: string; +} +export type BrowserWalletBehaviour = Modify>; + signAndSendTransaction(params: BrowserWalletSignAndSendTransactionParams): Promise; + signAndSendTransactions(params: BrowserWalletSignAndSendTransactionsParams): Promise; +}>; +export type BrowserWallet = BaseWallet<"browser", BrowserWalletMetadata, BrowserWalletBehaviour>; +export type InjectedWalletMetadata = BaseWalletMetadata & { + downloadUrl: string; + topLevelInjected?: boolean; + useUrlAccountImport?: boolean; +}; +export interface AccountImportData { + accountId: string; + privateKey: string; +} +export interface AccountImportSecureContextParams { + accounts: Array; +} +export type InjectedWalletBehaviour = Modify; +}>; +export type InjectedWallet = BaseWallet<"injected", InjectedWalletMetadata, InjectedWalletBehaviour>; +export type InstantLinkWalletMetadata = BaseWalletMetadata & { + contractId: string; + runOnStartup: boolean; +}; +export type InstantLinkWalletBehaviour = BaseWalletBehaviour & { + getContractId(): string; +}; +export type InstantLinkWallet = BaseWallet<"instant-link", InstantLinkWalletMetadata, InstantLinkWalletBehaviour>; +export type HardwareWalletMetadata = BaseWalletMetadata; +export interface HardwareWalletAccount { + derivationPath: string; + publicKey: string; + accountId: string; +} +export interface HardwareWalletSignInParams extends SignInParams { + /** + * Required for hardware wallets (e.g. Ledger). This is a list of `accounts` linked to public keys on your device. + */ + accounts: Array; +} +export type HardwareWalletBehaviour = Modify>; +}> & { + getPublicKey(derivationPath: string): Promise; +}; +export type HardwareWallet = BaseWallet<"hardware", HardwareWalletMetadata, HardwareWalletBehaviour>; +interface BridgeWalletSignInParams extends SignInParams { + /** + * Optional for bridge wallets (e.g Wallet Connect). + * This indicates whether to render QR Code in wallet selector modal or use the default vendor modal. + */ + qrCodeModal?: boolean; +} +export type BridgeWalletMetadata = BaseWalletMetadata; +export type BridgeWalletBehaviour = Modify>; +}>; +export type BridgeWallet = BaseWallet<"bridge", BridgeWalletMetadata, BridgeWalletBehaviour>; +export type WalletMetadata = BrowserWalletMetadata | InjectedWalletMetadata | InstantLinkWalletMetadata | HardwareWalletMetadata | BridgeWalletMetadata; +export type Wallet = BrowserWallet | InjectedWallet | InstantLinkWallet | HardwareWallet | BridgeWallet; +export type WalletType = Wallet["type"]; +interface WalletModuleOptions { + options: Options; +} +export interface WalletBehaviourOptions { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + options: Options; + store: ReadOnlyStore; + provider: ProviderService; + emitter: EventEmitterService; + logger: LoggerService; + storage: JsonStorageService; +} +export type WalletBehaviourFactory = (options: WalletBehaviourOptions & ExtraOptions) => Promise>; +export type WalletModule = { + id: Variation["id"]; + type: Variation["type"]; + metadata: Variation["metadata"]; + init(options: WalletBehaviourOptions): Promise>; +}; +export type WalletModuleFactory = (options: WalletModuleOptions) => Promise | null>; +export {}; +//# sourceMappingURL=wallet.types.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map b/packages/wallet-utils/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map new file mode 100644 index 000000000..c9ebc6eb8 --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet/wallet.types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet.types.d.ts","sourceRoot":"","sources":["../../../../../../../core/src/lib/wallet/wallet.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,UAAU,kBAAkB;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CACvE,CAAC;AAEF,UAAU,4BAA4B;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACxB;AAED,UAAU,6BAA6B;IACrC;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;CACxD;AAED,UAAU,mBAAmB;IAC3B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB;;;;OAIG;IACH,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACtE;;;OAGG;IACH,sBAAsB,CACpB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC;;;OAGG;IACH,uBAAuB,CACrB,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACzC,WAAW,CAAC,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CACxE;AAED,KAAK,UAAU,CACb,IAAI,SAAS,MAAM,EACnB,QAAQ,SAAS,kBAAkB,EACnC,SAAS,IACP;IACF;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IACX;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;KAC1B,CAAC;IACF,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,EAAE;QAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAC9C,cAAc,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,CAAC;AAIF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG;IACvD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,UAAU,yBAA0B,SAAQ,YAAY;IACtD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,yCACR,SAAQ,4BAA4B;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,0CACR,SAAQ,6BAA6B;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,mBAAmB,EACnB;IACE,sBAAsB,CAAC,IAAI,MAAM,CAAC;IAClC,6BAA6B,CAAC,EAAE,KAAK,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,sBAAsB,CACpB,MAAM,EAAE,yCAAyC,GAChD,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IACzC,uBAAuB,CACrB,MAAM,EAAE,0CAA0C,GACjD,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CACpC,SAAS,EACT,qBAAqB,EACrB,sBAAsB,CACvB,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,mBAAmB,EACnB;IACE,sBAAsB,CAAC,IAAI,MAAM,CAAC;IAClC,6BAA6B,CAAC,CAC5B,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CACrC,UAAU,EACV,sBAAsB,EACtB,uBAAuB,CACxB,CAAC;AAIF,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,GAAG;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,GAAG;IAC7D,aAAa,IAAI,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CACxC,cAAc,EACd,yBAAyB,EACzB,0BAA0B,CAC3B,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA2B,SAAQ,YAAY;IAC9D;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,mBAAmB,EACnB;IAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,CACxE,GAAG;IACF,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CACrC,UAAU,EACV,sBAAsB,EACtB,uBAAuB,CACxB,CAAC;AAIF,UAAU,wBAAyB,SAAQ,YAAY;IACrD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEtD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CACxC,mBAAmB,EACnB;IAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,CACtE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CACnC,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,CACtB,CAAC;AAIF,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,yBAAyB,GACzB,sBAAsB,GACtB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,MAAM,GACd,aAAa,GACb,cAAc,GACd,iBAAiB,GACjB,cAAc,GACd,YAAY,CAAC;AAEjB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB,CAAC,SAAS,SAAS,MAAM;IAC9D,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAGD,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,MAAM,EACxB,YAAY,SAAS,MAAM,GAAG,MAAM,IAClC,CACF,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GAAG,YAAY,KACtD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;AAE1D,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI;IAC5D,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,CACF,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,CACnE,OAAO,EAAE,mBAAmB,KACzB,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/core/src/lib/wallet/wallet.types.js b/packages/wallet-utils/dist/esm/core/src/lib/wallet/wallet.types.js new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/wallet-utils/dist/esm/core/src/lib/wallet/wallet.types.js @@ -0,0 +1 @@ +export {}; diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/index.d.ts b/packages/wallet-utils/dist/esm/wallet-utils/src/index.d.ts new file mode 100644 index 000000000..9b70859cc --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/index.d.ts @@ -0,0 +1,2 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/index.d.ts.map b/packages/wallet-utils/dist/esm/wallet-utils/src/index.d.ts.map new file mode 100644 index 000000000..0f953dcab --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/index.js b/packages/wallet-utils/dist/esm/wallet-utils/src/index.js new file mode 100644 index 000000000..27b22f6ee --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/index.js @@ -0,0 +1 @@ +export { createAction, signTransactions } from "./lib/wallet-utils"; diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/lib/create-action.d.ts b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/create-action.d.ts new file mode 100644 index 000000000..da65b4629 --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/create-action.d.ts @@ -0,0 +1,4 @@ +import * as nearAPI from "near-api-js"; +import type { Action } from "@near-wallet-selector/core"; +export declare const createAction: (action: Action) => nearAPI.transactions.Action; +//# sourceMappingURL=create-action.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/lib/create-action.d.ts.map b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/create-action.d.ts.map new file mode 100644 index 000000000..7a0b17623 --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/create-action.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"create-action.d.ts","sourceRoot":"","sources":["../../../../../src/lib/create-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgB3E,eAAO,MAAM,YAAY,WAAY,MAAM,gCAqD1C,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/lib/create-action.js b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/create-action.js new file mode 100644 index 000000000..d49ee0465 --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/create-action.js @@ -0,0 +1,51 @@ +import * as nearAPI from "near-api-js"; +const { transactions, utils } = nearAPI; +const getAccessKey = (permission) => { + if (permission === "FullAccess") { + return transactions.fullAccessKey(); + } + const { receiverId, methodNames = [] } = permission; + const allowance = permission.allowance + ? BigInt(permission.allowance) + : undefined; + return transactions.functionCallAccessKey(receiverId, methodNames, allowance); +}; +export const createAction = (action) => { + switch (action.type) { + case "CreateAccount": + return transactions.createAccount(); + case "DeployContract": { + const { code } = action.params; + return transactions.deployContract(code); + } + case "FunctionCall": { + const { methodName, args, gas, deposit } = action.params; + console.log('alohaws action', action); + return transactions.functionCall(methodName, args, BigInt(gas), BigInt(deposit)); + } + case "Transfer": { + const { deposit } = action.params; + return transactions.transfer(BigInt(deposit)); + } + case "Stake": { + const { stake, publicKey } = action.params; + return transactions.stake(BigInt(stake), utils.PublicKey.from(publicKey)); + } + case "AddKey": { + const { publicKey, accessKey } = action.params; + return transactions.addKey(utils.PublicKey.from(publicKey), + // TODO: Use accessKey.nonce? near-api-js seems to think 0 is fine? + getAccessKey(accessKey.permission)); + } + case "DeleteKey": { + const { publicKey } = action.params; + return transactions.deleteKey(utils.PublicKey.from(publicKey)); + } + case "DeleteAccount": { + const { beneficiaryId } = action.params; + return transactions.deleteAccount(beneficiaryId); + } + default: + throw new Error("Invalid action type"); + } +}; diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts new file mode 100644 index 000000000..fd0b85445 --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts @@ -0,0 +1,5 @@ +import type { Signer } from "@near-js/signers"; +import type { SignedTransaction } from "@near-js/transactions"; +import type { Network, Transaction } from "@near-wallet-selector/core/src"; +export declare const signTransactions: (transactions: Array, signer: Signer, network: Network) => Promise; +//# sourceMappingURL=sign-transactions.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map new file mode 100644 index 000000000..bdd8c1195 --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/sign-transactions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"sign-transactions.d.ts","sourceRoot":"","sources":["../../../../../src/lib/sign-transactions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAIzE,eAAO,MAAM,gBAAgB,iBACb,KAAK,CAAC,WAAW,CAAC,UACxB,MAAM,WACL,OAAO,iCAoDjB,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/lib/sign-transactions.js b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/sign-transactions.js new file mode 100644 index 000000000..d7d30548c --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/sign-transactions.js @@ -0,0 +1,34 @@ +import { KeyType, PublicKey } from "@near-js/crypto"; +import { createTransaction, signTransaction } from "@near-js/transactions"; +import { baseDecode } from "@near-js/utils"; +// import * as nearAPI from "near-api-js"; +import { JsonRpcProvider } from "@near-js/providers"; +import { createAction } from "./create-action"; +export const signTransactions = async (transactions, signer, network) => { + const provider = new JsonRpcProvider({ + url: network.nodeUrl, + }); + const signedTransactions = []; + for (let i = 0; i < transactions.length; i++) { + const publicKey = await signer.getPublicKey(transactions[i].signerId, network.networkId); + const [block, accessKey] = await Promise.all([ + provider.block({ finality: "final" }), + provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transactions[i].signerId, + public_key: publicKey.toString(), + }), + ]); + const actions = transactions[i].actions.map((action) => createAction(action)); + const transaction = createTransaction(transactions[i].signerId, new PublicKey({ + keyType: KeyType.ED25519, + data: publicKey.data + }), + // PublicKey.from(publicKey.toString()), + transactions[i].receiverId, accessKey.nonce + i + 1, actions, baseDecode(block.header.hash)); + const response = await signTransaction(transaction, signer, transactions[i].signerId, network.networkId); + signedTransactions.push(response[1]); + } + return signedTransactions; +}; diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts new file mode 100644 index 000000000..ca97d2268 --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts @@ -0,0 +1,4 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; +//# sourceMappingURL=wallet-utils.d.ts.map \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map new file mode 100644 index 000000000..ffc675757 --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/wallet-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../../../../src/lib/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/packages/wallet-utils/dist/esm/wallet-utils/src/lib/wallet-utils.js b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/wallet-utils.js new file mode 100644 index 000000000..d5a53e83f --- /dev/null +++ b/packages/wallet-utils/dist/esm/wallet-utils/src/lib/wallet-utils.js @@ -0,0 +1,3 @@ +import { createAction } from "./create-action"; +import { signTransactions } from "./sign-transactions"; +export { createAction, signTransactions }; diff --git a/packages/wallet-utils/jest.config.ts b/packages/wallet-utils/jest.config.ts index ef6e10796..61d7c3d94 100644 --- a/packages/wallet-utils/jest.config.ts +++ b/packages/wallet-utils/jest.config.ts @@ -7,7 +7,7 @@ export default { "^.+\\.[tj]s$": [ "ts-jest", { - tsconfig: "/tsconfig.spec.json", + tsconfig: "/delme-tsconfig.spec.json", }, ], }, diff --git a/packages/wallet-utils/package.json b/packages/wallet-utils/package.json index 00d477ac4..d85b77397 100644 --- a/packages/wallet-utils/package.json +++ b/packages/wallet-utils/package.json @@ -2,6 +2,40 @@ "name": "@near-wallet-selector/wallet-utils", "version": "8.9.13", "description": "Wallet utils package for NEAR Wallet Selector.", + "scripts": { + "compile:esm": "tsc -p tsconfig.esm.json", + "compile:cjs": "tsc -p tsconfig.cjs.json", + "clean": "yarn rimraf dist" + }, + "types": "./dist/esm/wallet-utils/src/index.d.ts", + "main": "./dist/cjs/wallet-utils/src/index.js", + "module": "./dist/esm/wallet-utils/src/index.js", + "type": "module", + "dependencies": { + "@near-js/crypto": "*", + "@near-js/providers": "*", + "@near-js/signers": "*", + "@near-js/transactions": "*", + "@near-js/utils": "*", + "@near-wallet-selector/core": "workspace:*", + "near-api-js": "*" + }, + "devDependencies": { + "@near-js/types": "*", + "@types/node": "*", + "rimraf": "*", + "typescript": "*" + }, + "files": [ + "./dist/esm", + "./dist/cjs" + ], + "exports": { + ".": { + "require": "./dist/cjs/wallet-utils/src/index.js", + "import": "./dist/esm/wallet-utils/src/index.js" + } + }, "keywords": [ "near", "blockchain", @@ -18,8 +52,5 @@ "bugs": { "url": "https://github.com/near/wallet-selector/issues" }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/wallet-utils", - "peerDependencies": { - "near-api-js": "4.0.3" - } + "homepage": "https://github.com/near/wallet-selector/tree/main/packages/wallet-utils" } diff --git a/packages/wallet-utils/project.json b/packages/wallet-utils/project.json deleted file mode 100644 index 8387d57d1..000000000 --- a/packages/wallet-utils/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "wallet-utils", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/wallet-utils/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/wallet-utils", - "tsConfig": "packages/wallet-utils/tsconfig.lib.json", - "project": "packages/wallet-utils/package.json", - "entryFile": "packages/wallet-utils/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/wallet-utils/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/wallet-utils/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/wallet-utils/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/wallet-utils"], - "options": { - "jestConfig": "packages/wallet-utils/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": [] -} diff --git a/packages/wallet-utils/src/lib/create-action.ts b/packages/wallet-utils/src/lib/create-action.ts index 34c964505..f7ebf0581 100644 --- a/packages/wallet-utils/src/lib/create-action.ts +++ b/packages/wallet-utils/src/lib/create-action.ts @@ -27,6 +27,8 @@ export const createAction = (action: Action) => { case "FunctionCall": { const { methodName, args, gas, deposit } = action.params; + console.log('alohaws action', action) + return transactions.functionCall( methodName, args, diff --git a/packages/wallet-utils/src/lib/sign-transactions.ts b/packages/wallet-utils/src/lib/sign-transactions.ts index f52de611f..f980ae346 100644 --- a/packages/wallet-utils/src/lib/sign-transactions.ts +++ b/packages/wallet-utils/src/lib/sign-transactions.ts @@ -1,19 +1,25 @@ -import type { Signer } from "near-api-js"; -import * as nearAPI from "near-api-js"; -import type { Network, Transaction } from "@near-wallet-selector/core"; -import type { AccessKeyViewRaw } from "near-api-js/lib/providers/provider"; -import { createAction } from "./create-action"; +// import type { Signer } from "near-api-js"; +import type {Signer} from "@near-js/signers"; +import {KeyType, PublicKey} from "@near-js/crypto"; +import type {SignedTransaction} from "@near-js/transactions"; +import {createTransaction, signTransaction} from "@near-js/transactions"; +import {baseDecode} from "@near-js/utils"; +// import * as nearAPI from "near-api-js"; +import {JsonRpcProvider} from "@near-js/providers"; +import type {Network, Transaction} from "@near-wallet-selector/core/src"; +import type {AccessKeyViewRaw} from "@near-js/types"; +import {createAction} from "./create-action"; export const signTransactions = async ( transactions: Array, signer: Signer, network: Network ) => { - const provider = new nearAPI.providers.JsonRpcProvider({ + const provider = new JsonRpcProvider({ url: network.nodeUrl, }); - const signedTransactions: Array = []; + const signedTransactions: Array = []; for (let i = 0; i < transactions.length; i++) { const publicKey = await signer.getPublicKey( @@ -35,16 +41,20 @@ export const signTransactions = async ( createAction(action) ); - const transaction = nearAPI.transactions.createTransaction( + const transaction = createTransaction( transactions[i].signerId, - nearAPI.utils.PublicKey.from(publicKey.toString()), + new PublicKey({ + keyType: KeyType.ED25519, + data: publicKey.data + }), + // PublicKey.from(publicKey.toString()), transactions[i].receiverId, accessKey.nonce + i + 1, actions, - nearAPI.utils.serialize.base_decode(block.header.hash) + baseDecode(block.header.hash) ); - const response = await nearAPI.transactions.signTransaction( + const response = await signTransaction( transaction, signer, transactions[i].signerId, diff --git a/packages/wallet-utils/src/lib/wallet-utils.spec.ts b/packages/wallet-utils/test/wallet-utils.spec.ts similarity index 96% rename from packages/wallet-utils/src/lib/wallet-utils.spec.ts rename to packages/wallet-utils/test/wallet-utils.spec.ts index 78b15de13..95f15a587 100644 --- a/packages/wallet-utils/src/lib/wallet-utils.spec.ts +++ b/packages/wallet-utils/test/wallet-utils.spec.ts @@ -1,4 +1,6 @@ -import { createAction } from "./wallet-utils"; +// Currently don't care if this file works, just had to move +// it out of the wrong place. +import { createAction } from "../src"; import { transactions, utils } from "near-api-js"; const TEST_PUBLIC_KEY = "ed25519:Anu5D32fr5YsQGVULF4fz3R2E3pNaeUhj4hsKcE4vDyk"; diff --git a/packages/wallet-utils/tsconfig.cjs.json b/packages/wallet-utils/tsconfig.cjs.json new file mode 100644 index 000000000..9f12707d4 --- /dev/null +++ b/packages/wallet-utils/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "./dist/cjs", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/wallet-utils/tsconfig.esm.json b/packages/wallet-utils/tsconfig.esm.json new file mode 100644 index 000000000..a51c6f15e --- /dev/null +++ b/packages/wallet-utils/tsconfig.esm.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*/src/index.ts"] + } + }, + "include": ["src/**/*"] +} diff --git a/packages/wallet-utils/tsconfig.json b/packages/wallet-utils/tsconfig.json index 8b6d6acaf..4d8b27c19 100644 --- a/packages/wallet-utils/tsconfig.json +++ b/packages/wallet-utils/tsconfig.json @@ -1,19 +1,14 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" + "module": "ESNext", + "outDir": "./dist/esm", + "declaration": true, + "declarationMap": true, + "types": ["node"], + "paths": { + "@near-wallet-selector/*": ["../*"] } - ] + }, + "include": ["src/**/*"] } diff --git a/packages/wallet-utils/tsconfig.lib.json b/packages/wallet-utils/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/wallet-utils/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/wallet-utils/tsconfig.spec.json b/packages/wallet-utils/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/wallet-utils/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/welldone-wallet/.babelrc b/packages/welldone-wallet/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/welldone-wallet/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/welldone-wallet/.eslintrc.json b/packages/welldone-wallet/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/welldone-wallet/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/welldone-wallet/README.md b/packages/welldone-wallet/README.md deleted file mode 100644 index 4b2eb2ad5..000000000 --- a/packages/welldone-wallet/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# @near-wallet-selector/welldone - -This is the [WELLDONE](https://chrome.google.com/webstore/detail/welldone-wallet-for-multi/bmkakpenjmcpfhhjadflneinmhboecjf) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js - -# Using NPM. -npm install near-api-js -``` -```bash -# Using Yarn -yarn add @near-wallet-selector/welldone-wallet - -# Using NPM. -npm install @near-wallet-selector/welldone-wallet -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupWelldoneWallet } from "@near-wallet-selector/welldone-wallet"; - -// WELLDONE Wallet for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const welldone = setupWelldoneWallet({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [welldone], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/welldone-wallet.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupWelldoneWallet } from "@near-wallet-selector/welldone-wallet"; -import welldoneIconUrl from "@near-wallet-selector/welldone-wallet/assets/welldone-wallet.png"; - -const welldone = setupWelldoneWallet({ - iconUrl: welldoneIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/welldone-wallet/assets/welldone-wallet.png b/packages/welldone-wallet/assets/welldone-wallet.png deleted file mode 100644 index 865aee859..000000000 Binary files a/packages/welldone-wallet/assets/welldone-wallet.png and /dev/null differ diff --git a/packages/welldone-wallet/jest.config.js b/packages/welldone-wallet/jest.config.js deleted file mode 100644 index e3c89caff..000000000 --- a/packages/welldone-wallet/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "welldone wallet", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/welldone-wallet", -}; diff --git a/packages/welldone-wallet/jest.config.ts b/packages/welldone-wallet/jest.config.ts deleted file mode 100644 index 509581d77..000000000 --- a/packages/welldone-wallet/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "welldone-wallet", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/welldone-wallet", -}; diff --git a/packages/welldone-wallet/package.json b/packages/welldone-wallet/package.json deleted file mode 100644 index 52a7a2efd..000000000 --- a/packages/welldone-wallet/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@near-wallet-selector/welldone-wallet", - "version": "8.9.13", - "description": "Welldone wallet package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector", - "injected wallet", - "welldone wallet" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/welldone-wallet" -} diff --git a/packages/welldone-wallet/project.json b/packages/welldone-wallet/project.json deleted file mode 100644 index 40e2a629e..000000000 --- a/packages/welldone-wallet/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "welldone-wallet", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/welldone-wallet/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/welldone-wallet", - "tsConfig": "packages/welldone-wallet/tsconfig.lib.json", - "project": "packages/welldone-wallet/package.json", - "entryFile": "packages/welldone-wallet/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/welldone-wallet/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/welldone-wallet/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/welldone-wallet/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/welldone-wallet"], - "options": { - "jestConfig": "packages/welldone-wallet/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/welldone-wallet/src/index.ts b/packages/welldone-wallet/src/index.ts deleted file mode 100644 index a522cadbc..000000000 --- a/packages/welldone-wallet/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { setupWelldoneWallet } from "./lib/welldone"; diff --git a/packages/welldone-wallet/src/lib/icon.ts b/packages/welldone-wallet/src/lib/icon.ts deleted file mode 100644 index 71bf7b4a9..000000000 --- a/packages/welldone-wallet/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default "data:image/png;base64,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"; diff --git a/packages/welldone-wallet/src/lib/injected-welldone.ts b/packages/welldone-wallet/src/lib/injected-welldone.ts deleted file mode 100644 index 6ab981bcf..000000000 --- a/packages/welldone-wallet/src/lib/injected-welldone.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { Action } from "@near-wallet-selector/core"; - -export interface WelldoneWalletParams { - iconUrl?: string; - deprecated?: boolean; -} - -export interface ViewAccessKeyParams { - accountId: string; - publicKey: string; -} - -export interface SignAndSendTransactionParams { - signerId?: string; - receiverId?: string; - actions: Array; -} - -export interface RequestParams { - jsonrpc?: "2.0"; - id?: number; - method: string; - params?: object; -} - -export interface WalletProvider { - getAccount: () => Promise; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - request: (chain: string, args: RequestParams) => Promise; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - on: (message: string, listener: (...args: Array) => void) => void; -} - -export interface WelldoneWalletState { - wallet?: WalletProvider; - account?: ViewAccessKeyParams; -} diff --git a/packages/welldone-wallet/src/lib/welldone.spec.ts b/packages/welldone-wallet/src/lib/welldone.spec.ts deleted file mode 100644 index 3aa2cb1d2..000000000 --- a/packages/welldone-wallet/src/lib/welldone.spec.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* eslint-disable @nx/enforce-module-boundaries */ -import { mockWallet } from "../../../core/src/lib/testUtils"; -import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; -import type { InjectedWallet } from "../../../core/src/lib/wallet"; -import { setupWelldoneWallet } from "./welldone"; -import type { RequestParams } from "./injected-welldone"; - -// eslint-disable-next-line @typescript-eslint/no-var-requires -global.TextDecoder = require("util").TextDecoder; - -const accountId = "amirsaran.testnet"; -const publicKey = "ed25519:GF7tLvSzcxX4EtrMFtGvGTb2yUj2DhL8hWzc97BwUkyC"; -const transactions = [ - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, - { - signerId: accountId, - receiverId: "test.testnet", - actions: [], - }, -]; - -const mockWelldoneOnWindow = () => { - window.dapp = { - getAccount: jest.fn(), - request: jest.fn(async (chain: string, args: RequestParams) => { - if (chain === "near" && args.method === "dapp:accounts") { - return { - near: { - address: accountId, - pubKey: publicKey, - }, - }; - } else if (chain === "near" && args.method === "query") { - return { - permission: "FullAccess", - }; - } else if (chain === "near" && args.method === "dapp:signMessage") { - return [ - { - signature: - "0x8f77971cdd4813c82f27dfce119472f78adc7552ddec4d6ac72dcc3c3deebb31c6d2d85fc7d1b68c1d22a7aa1a749e0a3607403603af9b7afc3fbe2115921509", - publicKey, - }, - ]; - } else if (chain === "near" && args.method === "dapp:signTransaction") { - return [ - { - signature: - "0x0000000000e27d386ac7c349f60af93979f9e9c916660f83a5814c6d28aaf1668c2b85c81f819c8bbc365a000000000000d7bbdd188195d2a74dc6cc6f77457f131fd9c48f20376e4967b6f76f377ee98200000000", - publicKey, - }, - ]; - } else { - return null; - } - }), - on: jest.fn(), - }; - - return window.dapp; -}; - -const createWelldoneWallet = async (deps: MockWalletDependencies = {}) => { - const injectedWelldone = mockWelldoneOnWindow(); - const { wallet } = await mockWallet( - setupWelldoneWallet(), - deps - ); - - return { - wallet, - injectedWelldone, - }; -}; - -afterEach(() => { - jest.resetModules(); -}); - -describe("signIn", () => { - it.skip("sign into welldone wallet", async () => { - const { wallet, injectedWelldone } = await createWelldoneWallet(); - - const accounts = await wallet.signIn({ contractId: "test.testnet" }); - - expect(injectedWelldone.request).toHaveBeenCalledWith("near", { - method: "query", - params: { - request_type: "view_access_key", - finality: "final", - account_id: accountId, - public_key: publicKey, - }, - }); - expect(accounts).toEqual([{ accountId, publicKey }]); - }); -}); - -describe("signOut", () => { - it.skip("sign out of welldone wallet", async () => { - const { wallet } = await createWelldoneWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signOut(); - }); -}); - -describe("getAccounts", () => { - it.skip("returns array of accounts", async () => { - const { wallet, injectedWelldone } = await createWelldoneWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.getAccounts(); - - expect(injectedWelldone.request).toHaveBeenCalledWith("near", { - method: "dapp:accounts", - }); - expect(result).toEqual([{ accountId, publicKey }]); - }); -}); - -describe("signAndSendTransaction", () => { - it.skip("sign transaction in welldone", async () => { - const { wallet, injectedWelldone } = await createWelldoneWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - await wallet.signAndSendTransaction(transactions[0]); - - expect(injectedWelldone.request).toHaveBeenCalledTimes(3); - }); -}); -describe("signAndSendTransactions", () => { - it.skip("sign transactions in welldone", async () => { - const { wallet, injectedWelldone } = await createWelldoneWallet(); - - await wallet.signIn({ contractId: "test.testnet" }); - const result = await wallet.signAndSendTransactions({ - transactions, - }); - - expect(injectedWelldone.request).toHaveBeenCalledTimes(4); - expect(result.length).toEqual(transactions.length); - }); -}); diff --git a/packages/welldone-wallet/src/lib/welldone.ts b/packages/welldone-wallet/src/lib/welldone.ts deleted file mode 100644 index e8831f112..000000000 --- a/packages/welldone-wallet/src/lib/welldone.ts +++ /dev/null @@ -1,433 +0,0 @@ -import type { Signer } from "near-api-js"; -import * as nearAPI from "near-api-js"; -import type { - WalletModuleFactory, - InjectedWallet, - WalletBehaviourFactory, - FinalExecutionOutcome, - JsonStorageService, - Optional, - Transaction, - Account, - SignMessageParams, - SignedMessage, -} from "@near-wallet-selector/core"; -import { - isCurrentBrowserSupported, - serializeNep413, - waitFor, -} from "@near-wallet-selector/core"; -import type { - ViewAccessKeyParams, - WalletProvider, - WelldoneWalletParams, - WelldoneWalletState, -} from "./injected-welldone"; -import icon from "./icon"; -import { signTransactions } from "@near-wallet-selector/wallet-utils"; -import isMobile from "is-mobile"; - -export const STORAGE_ACCOUNT = "account"; - -declare global { - interface Window { - dapp: WalletProvider | undefined; - } -} - -const isInstalled = () => { - return waitFor(() => !!window.dapp).catch(() => false); -}; - -async function setupWalletState( - storage: JsonStorageService -): Promise { - const account = await storage.getItem(STORAGE_ACCOUNT); - if (window.dapp) { - const wallet = window.dapp; - return { - wallet, - account: account ? account : undefined, - }; - } - return {}; -} - -const WelldoneWallet: WalletBehaviourFactory = async ({ - options, - store, - emitter, - logger, - storage, - provider, -}) => { - const _state = await setupWalletState(storage); - - const _getAccounts = async () => { - if (_state.wallet) { - const res = await _state.wallet.request("near", { - method: "dapp:accounts", - }); - return res["near"] ? [res["near"].address, res["near"].pubKey] : []; - } - return []; - }; - - const _validateAccessKey = async ({ - accountId, - publicKey, - }: ViewAccessKeyParams) => { - logger.log("validateAccessKey", { accountId, publicKey }); - if (!_state.wallet) { - throw new Error("Wallet is not installed"); - } - const accessKey = await _state.wallet.request("near", { - method: "query", - params: { - request_type: "view_access_key", - finality: "final", - account_id: accountId, - public_key: publicKey, - }, - }); - - logger.log("validateAccessKey:accessKey", { accessKey }); - - if (accessKey.permission !== "FullAccess") { - throw new Error("Public key requires 'FullAccess' permission"); - } - - return accessKey; - }; - - const cleanup = () => { - if (_state.account) { - storage.removeItem(STORAGE_ACCOUNT); - delete _state.account; - } - }; - - const getAccounts = (): Array => { - return _state.account - ? [ - { - accountId: _state.account.accountId, - publicKey: _state.account.publicKey, - }, - ] - : []; - }; - - const signOut = async () => { - cleanup(); - emitter.emit("signedOut", null); - }; - - const setupEvents = () => { - if (_state.wallet) { - _state.wallet.on("dapp:accountsChanged", async (newAccountId) => { - logger.log("onAccountChange", newAccountId); - await signOut(); - }); - - _state.wallet.on("dapp:chainChanged", async (rpc) => { - logger.log("onNetworkChange", rpc); - - const networkId = rpc.split(":")[1] === "near" ? "mainnet" : "testnet"; - - if (options.network.networkId !== networkId) { - await signOut(); - - emitter.emit("networkChanged", { networkId: networkId }); - } - }); - } - }; - - const signer: Signer = { - createKey: () => { - throw new Error("Not implemented"); - }, - getPublicKey: async (accountId) => { - const accounts = getAccounts(); - const account = accounts.find((a) => a.accountId === accountId); - - if (!account) { - throw new Error("Failed to find public key for account"); - } - - return nearAPI.utils.PublicKey.from(account.publicKey!); - }, - signMessage: async (message, accountId) => { - if (!_state.wallet) { - throw new Error("Wallet is not installed"); - } - - const accounts = getAccounts(); - const account = accounts.find((a) => a.accountId === accountId); - - if (!account) { - throw new Error("Failed to find account for signing"); - } - - try { - const tx = nearAPI.transactions.Transaction.decode( - Buffer.from(message) - ); - const serializedTx = Buffer.from(tx.encode()).toString("hex"); - const signed = await _state.wallet.request("near", { - method: "dapp:signTransaction", - params: ["0x" + serializedTx], - }); - - return { - signature: Buffer.from(signed[0].signature.substr(2), "hex"), - publicKey: nearAPI.utils.PublicKey.from(signed[0].publicKey), - }; - } catch (err) { - const signed = await _state.wallet.request("near", { - method: "dapp:signMessage", - params: ["0x" + Buffer.from(message).toString("hex")], - }); - - return { - signature: Buffer.from(signed[0].signature.substr(2), "hex"), - publicKey: nearAPI.utils.PublicKey.from(signed[0].publicKey), - }; - } - }, - }; - - const transformTransactions = ( - transactions: Array> - ): Array => { - const accounts = getAccounts(); - const { contract } = store.getState(); - - if (!accounts.length || !contract) { - throw new Error("Wallet not signed in"); - } - - return transactions.map((transaction) => { - return { - signerId: transaction.signerId || accounts[0].accountId, - receiverId: transaction.receiverId || contract.contractId, - actions: transaction.actions, - }; - }); - }; - - return { - async signIn() { - const existingAccounts = getAccounts(); - - if (existingAccounts.length) { - return existingAccounts; - } - - if (_state.account) { - await signOut(); - } - - const account = await _getAccounts(); - - const accessKey = await _validateAccessKey({ - accountId: account[0], - publicKey: account[1], - }); - - if (!accessKey) { - signOut(); - throw new Error( - `Public key (${account[1]}) is not registered with the account '${account[0]}'.` - ); - } - - await storage.setItem(STORAGE_ACCOUNT, { - accountId: account[0], - publicKey: account[1], - }); - - _state.account = { - accountId: account[0], - publicKey: account[1], - }; - - setupEvents(); - - return getAccounts(); - }, - - async getAccounts() { - return getAccounts(); - }, - - signOut, - - async verifyOwner({ message }) { - logger.log("verifyOwner", { message }); - - if (!_state.wallet) { - throw new Error("Wallet is not installed"); - } - - const account = _state.account; - - if (!account) { - throw new Error("Wallet not signed in"); - } - - const accountId = account.accountId; - const pubKey = nearAPI.utils.PublicKey.fromString(account.publicKey); - const block = await provider.block({ finality: "final" }); - - const data = { - accountId, - message, - blockId: block.header.hash, - publicKey: Buffer.from(pubKey.data).toString("base64"), - keyType: pubKey.keyType, - }; - const encoded = JSON.stringify(data); - - const signed = await signer.signMessage( - new Uint8Array(Buffer.from(encoded)), - accountId - ); - - return { - ...data, - signature: Buffer.from(signed.signature).toString("base64"), - }; - }, - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - async signMessage(message: SignMessageParams): Promise { - if (!_state.wallet) { - throw new Error("Wallet is not installed"); - } - - const account = await _getAccounts(); - const accountId = account[0]; - - if (!accountId) { - throw new Error("Failed to find account for signing"); - } - - const serializedTx = serializeNep413(message); - const signed = await _state.wallet.request("near", { - method: "dapp:signMessage", - params: ["0x" + serializedTx.toString("hex")], - }); - - const result = { - accountId, - publicKey: signed[0].publicKey, - signature: Buffer.from(signed[0].signature.substr(2), "hex").toString( - "base64" - ), - }; - - if (message.state) { - return { ...result, state: message.state }; - } - - return result; - }, - - async signAndSendTransaction({ signerId, receiverId, actions }) { - logger.log("signAndSendTransaction", { signerId, receiverId, actions }); - - const { contract } = store.getState(); - const accounts = getAccounts(); - - if (!accounts.length || !contract) { - throw new Error("Wallet not signed in"); - } - - const [signedTx] = await signTransactions( - transformTransactions([{ signerId, receiverId, actions }]), - signer, - options.network - ); - - return provider.sendTransaction(signedTx); - }, - - async signAndSendTransactions({ transactions }) { - logger.log("signAndSendTransactions", { transactions }); - - const signedTxs = await signTransactions( - transformTransactions(transactions), - signer, - options.network - ); - - const results: Array = []; - - for (let i = 0; i < signedTxs.length; i++) { - results.push(await provider.sendTransaction(signedTxs[i])); - } - - return results; - }, - - async importAccountsInSecureContext({ accounts }) { - if (!_state.wallet) { - throw new Error("Wallet is not installed"); - } - const privateKeys: Array = []; - // use batch import - accounts.forEach(({ privateKey }) => { - if (privateKey.slice(0, 8) === "ed25519:") { - privateKeys.push(privateKey.slice(8)); - } else { - privateKeys.push(privateKey); - } - }); - const params = { - privateKey: privateKeys, - network: options.network.networkId, - }; - await _state.wallet.request("near", { - method: "experimental:near:importPrivatekey", - params: [params], - }); - }, - }; -}; - -export function setupWelldoneWallet({ - iconUrl = icon, - deprecated = false, -}: WelldoneWalletParams = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - const isSupported = isCurrentBrowserSupported([ - "chrome", - "edge-chromium", - "opera", - ]); - - if (mobile || !isSupported) { - return null; - } - - const installed = await isInstalled(); - - return { - id: "welldone-wallet", - type: "injected", - metadata: { - name: "WELLDONE Wallet", - description: "WELLDONE Wallet for Multichains", - iconUrl, - downloadUrl: - "https://chrome.google.com/webstore/detail/welldone-wallet/bmkakpenjmcpfhhjadflneinmhboecjf", - deprecated, - available: installed, - }, - init: WelldoneWallet, - }; - }; -} diff --git a/packages/welldone-wallet/tsconfig.json b/packages/welldone-wallet/tsconfig.json deleted file mode 100644 index 3aaed7519..000000000 --- a/packages/welldone-wallet/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "resolveJsonModule": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/welldone-wallet/tsconfig.lib.json b/packages/welldone-wallet/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/welldone-wallet/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/welldone-wallet/tsconfig.spec.json b/packages/welldone-wallet/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/welldone-wallet/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/packages/xdefi/.babelrc b/packages/xdefi/.babelrc deleted file mode 100644 index b63f0528f..000000000 --- a/packages/xdefi/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/js/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/packages/xdefi/.eslintrc.json b/packages/xdefi/.eslintrc.json deleted file mode 100644 index 9d9c0db55..000000000 --- a/packages/xdefi/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/packages/xdefi/README.md b/packages/xdefi/README.md deleted file mode 100644 index 9b6544a1b..000000000 --- a/packages/xdefi/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# @near-wallet-selector/xdefi - -This is the [XDEFI](https://www.xdefi.io/) package for NEAR Wallet Selector. - -## Installation and Usage - -The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: - -```bash -# Using Yarn -yarn add near-api-js@^1.0.0 - -# Using NPM. -npm install near-api-js@^1.0.0 -``` -```bash -# Using Yarn -yarn add @near-wallet-selector/xdefi - -# Using NPM. -npm install @near-wallet-selector/xdefi -``` - -Then use it in your dApp: - -```ts -import { setupWalletSelector } from "@near-wallet-selector/core"; -import { setupXDEFI } from "@near-wallet-selector/xdefi"; - -// XDEFI for Wallet Selector can be setup without any params or it can take few optional params, see options below. -const xdefi = setupXDEFI({ - iconUrl: "https://" // optional -}); - -const selector = await setupWalletSelector({ - network: "testnet", - modules: [xdefi], -}); -``` - -## Options - -- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/xdefi-icon.png`. -- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. - -## Assets - -Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: - -```ts -import { setupXDEFI } from "@near-wallet-selector/xdefi"; -import xdefiIconUrl from "@near-wallet-selector/xdefi/assets/xdefi-icon.png"; - -const xdefi = setupXDEFI({ - iconUrl: xdefiIconUrl -}); -``` - -## License - -This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/xdefi/assets/xdefi-icon.png b/packages/xdefi/assets/xdefi-icon.png deleted file mode 100644 index 35dffa0d6..000000000 Binary files a/packages/xdefi/assets/xdefi-icon.png and /dev/null differ diff --git a/packages/xdefi/jest.config.js b/packages/xdefi/jest.config.js deleted file mode 100644 index 4a1032c34..000000000 --- a/packages/xdefi/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - displayName: "xdefi", - preset: "../../jest.preset.js", - globals: { - "ts-jest": { - tsconfig: "/tsconfig.spec.json", - }, - }, - transform: { - "^.+\\.[tj]sx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/xdefi", -}; diff --git a/packages/xdefi/jest.config.ts b/packages/xdefi/jest.config.ts deleted file mode 100644 index 30c34491f..000000000 --- a/packages/xdefi/jest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* eslint-disable */ -export default { - displayName: "xdefi", - preset: "../../jest.preset.js", - globals: {}, - transform: { - "^.+\\.[tj]s$": [ - "ts-jest", - { - tsconfig: "/tsconfig.spec.json", - }, - ], - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx"], - coverageDirectory: "../../coverage/packages/xdefi", -}; diff --git a/packages/xdefi/package.json b/packages/xdefi/package.json deleted file mode 100644 index a8b45f5ab..000000000 --- a/packages/xdefi/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@near-wallet-selector/xdefi", - "version": "8.9.13", - "description": "This is the XDEFI package for NEAR Wallet Selector.", - "keywords": [ - "near", - "blockchain", - "wallets", - "dapps", - "near-protocol", - "near-blockchain", - "wallet selector xdefi", - "xdefi" - ], - "repository": { - "type": "git", - "url": "https://github.com/near/wallet-selector.git" - }, - "bugs": { - "url": "https://github.com/near/wallet-selector/issues" - }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/xdefi" -} diff --git a/packages/xdefi/project.json b/packages/xdefi/project.json deleted file mode 100644 index f9f12b085..000000000 --- a/packages/xdefi/project.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "xdefi", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "packages/xdefi/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/rollup:rollup", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/packages/xdefi", - "tsConfig": "packages/xdefi/tsconfig.lib.json", - "project": "packages/xdefi/package.json", - "entryFile": "packages/xdefi/src/index.ts", - "buildableProjectDepsInPackageJsonType": "dependencies", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "packages/xdefi/README.md", - "input": ".", - "output": "." - }, - { - "glob": "packages/xdefi/assets/*", - "input": ".", - "output": "assets" - } - ] - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["packages/xdefi/**/*.ts"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/packages/xdefi"], - "options": { - "jestConfig": "packages/xdefi/jest.config.ts", - "passWithNoTests": true - } - }, - "deploy": { - "executor": "ngx-deploy-npm:deploy", - "options": { - "access": "public" - }, - "dependsOn": ["^deploy"] - } - }, - "tags": ["injected-wallet"] -} diff --git a/packages/xdefi/src/index.ts b/packages/xdefi/src/index.ts deleted file mode 100644 index 0b990eeaf..000000000 --- a/packages/xdefi/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { setupXDEFI } from "./lib/xdefi"; -export type { XDEFIState } from "./lib/xdefi"; diff --git a/packages/xdefi/src/lib/icon.ts b/packages/xdefi/src/lib/icon.ts deleted file mode 100644 index f56180c40..000000000 --- a/packages/xdefi/src/lib/icon.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iYXV0byIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMTQuMjYyNyAxMy40MDEzQzEyLjQyMjcgMTQuNTMwNyA5Ljk1OTg3IDE1LjExMjQgNy40NjU1OCAxNC45ODgxQzUuMzY4NDQgMTQuODg2NSAzLjY0ODQ0IDE0LjE0MTEgMi42MDg0NCAxMi45MTU3QzEuNjk0MTYgMTEuODIwMSAxLjMzOTg3IDEwLjM3NDUgMS41Nzk4NyA4LjcxMTQzQzEuNjYxMjEgOC4xNTg3NCAxLjgyNzkxIDcuNjIxNjYgMi4wNzQxNSA3LjExODk2TDIuMTA4NDQgNy4wNDgzN0MyLjk3MTcgNS40MDU5NSA0LjI1MjgyIDQuMDEzOTcgNS44MjU3MyAzLjAwOTQyQzcuMzk4NjQgMi4wMDQ4NiA5LjIwOTEzIDEuNDIyMzYgMTEuMDc5IDEuMzE5MjRDMTIuOTQ4OSAxLjIxNjExIDE0LjgxMzcgMS41OTU5MiAxNi40OSAyLjQyMTI4QzE4LjE2NjIgMy4yNDY2NSAxOS41OTYxIDQuNDg5MTIgMjAuNjM4OSA2LjAyNjQxQzIxLjY4MTcgNy41NjM3MSAyMi4zMDE1IDkuMzQyODUgMjIuNDM3MyAxMS4xODg3QzIyLjU3MzEgMTMuMDM0NiAyMi4yMjAyIDE0Ljg4MzYgMjEuNDEzMyAxNi41NTM4QzIwLjYwNjQgMTguMjI0IDE5LjM3MzQgMTkuNjU3NyAxNy44MzU1IDIwLjcxNEMxNi4yOTc3IDIxLjc3MDIgMTQuNTA4IDIyLjQxMjYgMTIuNjQyNyAyMi41Nzc4TDEyLjc1NyAyMy44NzM4QzE0Ljg1MTMgMjMuNjg5NCAxNi44NjA4IDIyLjk2OTEgMTguNTg3NyAyMS43ODM3QzIwLjMxNDYgMjAuNTk4NCAyMS42OTkyIDE4Ljk4ODkgMjIuNjA1MSAxNy4xMTM4QzIzLjUxMSAxNS4yMzg3IDIzLjkwNyAxMy4xNjI3IDIzLjc1NDEgMTEuMDkwNEMyMy42MDExIDkuMDE4MDggMjIuOTA0NSA3LjAyMDg4IDIxLjczMjggNS4yOTU1NUMyMC41NjEyIDMuNTcwMjIgMTguOTU0OSAyLjE3NjMgMTcuMDcyMyAxLjI1MTExQzE1LjE4OTYgMC4zMjU5MDkgMTMuMDk1NiAtMC4wOTg2NDExIDEwLjk5NjQgMC4wMTkyNzg3QzguODk3MjIgMC4xMzcxOTggNi44NjUzMyAwLjc5MzUyIDUuMTAwOTEgMS45MjM1OUMzLjMzNjQ5IDMuMDUzNjUgMS45MDA0MiA0LjYxODQ4IDAuOTM0MTU3IDYuNDYzOUwwLjg4ODQ0MSA2LjU1NzA3QzAuNTgyOTc2IDcuMTgwOSAwLjM3Njc0IDcuODQ3NTYgMC4yNzcwMTMgOC41MzM1NEMtMC4wMDg3MDEzMiAxMC41NjA4IDAuNDM0MTUzIDEyLjM2NTEgMS41OTEzIDEzLjc1NDJDMi44NTcwMSAxNS4yNzMzIDQuOTE3MDEgMTYuMTc2OCA3LjM4ODQ0IDE2LjI5NTRDMTAuMzk3IDE2LjQ0NTEgMTMuMzg4NCAxNS42MzQ3IDE1LjUxMTMgMTQuMTQzOUwxNC4yNjI3IDEzLjQwMTNaIiBmaWxsPSIjMjA0MUUwIj48L3BhdGg+PHBhdGggZD0iTTE2Ljc4IDE0Ljg3NUMxNS41ODI5IDE1LjkwMjggMTIuOCAxNy43NjYzIDguMTgyODYgMTguMDIwNEMzLjAxNDI5IDE4LjMwMjggMC44NjAwMDEgMTYuNjQyNSAwLjg0MDAwMSAxNi42MjU2TDAuNDIyODU2IDE3LjEzMzhMMC44NDI4NTYgMTYuNjM0MUwwIDE3LjYzMzZDMC4wOTE0Mjg2IDE3LjcwOTggMi4xNTcxNCAxOS4zNTg4IDcuMDA4NTcgMTkuMzU4OEM3LjQwNTcxIDE5LjM1ODggNy44MjI4NiAxOS4zNTg4IDguMjU3MTQgMTkuMzI0OUMxMy44MzcxIDE5LjAxNzEgMTYuOTAyOSAxNi42MTE1IDE3Ljk3MTQgMTUuNTgzN0wxNi43OCAxNC44NzVaIiBmaWxsPSIjMjA0MUUwIj48L3BhdGg+PHBhdGggZD0iTTE5LjAxOTkgMTYuMjE5MUMxOC4zMTIgMTcuMTM4NiAxNy40NDA3IDE3LjkyMzIgMTYuNDQ4NSAxOC41MzQ0QzEyLjk1MTMgMjAuNzY0OSA4LjUwMjc1IDIxLjA1MjkgNS4zODg0NyAyMC44OTc2TDUuMzIyNzUgMjIuMTk5M0M1Ljg0NTYxIDIyLjIyNDcgNi4zNDg0NyAyMi4yMzYgNi44MzcwNCAyMi4yMzZDMTUuNjE5OSAyMi4yMzYgMTkuMTY4NSAxOC4yODMxIDIwLjE1OTkgMTYuODcxM0wxOS4wMTcgMTYuMjA3OCIgZmlsbD0iIzIwNDFFMCI+PC9wYXRoPjxwYXRoIGQ9Ik0xOC42ODU2IDExLjI5MjNDMTkuMjY3OSAxMS4yOTIzIDE5LjczOTkgMTAuODI1OCAxOS43Mzk5IDEwLjI1MDRDMTkuNzM5OSA5LjY3NDk2IDE5LjI2NzkgOS4yMDg1IDE4LjY4NTYgOS4yMDg1QzE4LjEwMzQgOS4yMDg1IDE3LjYzMTMgOS42NzQ5NiAxNy42MzEzIDEwLjI1MDRDMTcuNjMxMyAxMC44MjU4IDE4LjEwMzQgMTEuMjkyMyAxOC42ODU2IDExLjI5MjNaIiBmaWxsPSIjMjA0MUUwIj48L3BhdGg+Cjwvc3ZnPgo=`; diff --git a/packages/xdefi/src/lib/injected-xdefi.ts b/packages/xdefi/src/lib/injected-xdefi.ts deleted file mode 100644 index a3ec1724c..000000000 --- a/packages/xdefi/src/lib/injected-xdefi.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { Transaction } from "@near-wallet-selector/core"; -import type { FinalExecutionOutcome } from "near-api-js/lib/providers"; -import type { PublicKey as NearPublicKey } from "near-api-js/lib/utils"; - -export interface NearAccount { - accountId: string; - publicKey: NearPublicKey; -} - -export interface XDEFIAccount { - accountId: string; - publicKey: NearPublicKey; -} - -export interface NearXDEFI { - accounts: Array; - connected: boolean; - signAndSendTransaction: ( - transaction: Transaction - ) => Promise; - signAndSendTransactions: ( - transactions: Array - ) => Promise>; - connect: (network: string) => Promise>; - disconnect: () => Promise; -} - -export interface InjectedXDEFI { - near: NearXDEFI; -} diff --git a/packages/xdefi/src/lib/xdefi.ts b/packages/xdefi/src/lib/xdefi.ts deleted file mode 100644 index 4a3b711e8..000000000 --- a/packages/xdefi/src/lib/xdefi.ts +++ /dev/null @@ -1,182 +0,0 @@ -import type { - InjectedWallet, - Network, - Optional, - Transaction, - WalletBehaviourFactory, - WalletModuleFactory, - WalletSelectorStore, -} from "@near-wallet-selector/core"; -import { waitFor } from "@near-wallet-selector/core"; -import { isMobile } from "is-mobile"; -import icon from "./icon"; -import type { InjectedXDEFI, NearXDEFI } from "./injected-xdefi"; - -declare global { - interface Window { - xfi: InjectedXDEFI | undefined; - } -} - -export interface XDEFIState { - wallet: NearXDEFI; - network: Network; -} - -const setupXDEFIState = async ( - store: WalletSelectorStore, - network: Network -): Promise => { - const { selectedWalletId } = store.getState(); - const wallet = window.xfi!.near!; - - // Attempt to reconnect wallet if previously selected. - if (selectedWalletId === "xdefi") { - await wallet.connect(network.networkId).catch(() => null); - } - - return { - wallet, - network, - }; -}; - -const isInstalled = () => { - return waitFor(() => !!window.xfi?.near).catch(() => false); -}; - -const XDEFI: WalletBehaviourFactory = async ({ - metadata, - store, - logger, - options, -}) => { - const _state = await setupXDEFIState(store, options.network); - - const getAccounts = () => { - if (!_state.wallet.accounts) { - return []; - } - - return _state.wallet.accounts; - }; - - const transformTransactions = ( - transactions: Array> - ): Array => { - const accounts = getAccounts(); - const { contract } = store.getState(); - - if (!accounts.length || !contract) { - throw new Error("Wallet not signed in"); - } - - return transactions.map((transaction) => { - return { - signerId: transaction.signerId || accounts[0].accountId, - receiverId: transaction.receiverId || contract.contractId, - actions: transaction.actions, - }; - }); - }; - - return { - async signIn() { - const existingAccounts = getAccounts().map((x) => ({ - accountId: x.accountId, - publicKey: x.publicKey.toString(), - })); - - if (existingAccounts.length) { - return existingAccounts; - } - - await _state.wallet.connect(_state.network.networkId); - - return getAccounts().map((x) => ({ - accountId: x.accountId, - publicKey: x.publicKey.toString(), - })); - }, - - async signOut() { - await _state.wallet.disconnect(); - }, - - async getAccounts() { - return getAccounts().map((x) => ({ - accountId: x.accountId, - publicKey: x.publicKey.toString(), - })); - }, - - async verifyOwner({ message }) { - logger.log("XDEFI:verifyOwner", { message }); - - throw new Error(`Method not supported by ${metadata.name}`); - }, - - async signAndSendTransaction(transaction: Transaction) { - logger.log("signAndSendTransaction", transaction); - - const { contract } = store.getState(); - const accounts = getAccounts(); - - if (!accounts.length || !contract) { - throw new Error("Wallet not signed in"); - } - - const result = await _state.wallet.signAndSendTransaction( - transformTransactions([transaction])[0] - ); - - return result; - }, - - async signAndSendTransactions({ - transactions, - }: { - transactions: Array; - }) { - logger.log("signAndSendTransactions", { transactions }); - - const result = await _state.wallet.signAndSendTransactions( - transformTransactions(transactions) - ); - - return result; - }, - }; -}; - -export interface XDEFIWalletParams { - iconUrl?: string; - deprecated?: boolean; -} - -export function setupXDEFI({ - iconUrl = icon, - deprecated = false, -}: XDEFIWalletParams = {}): WalletModuleFactory { - return async () => { - const mobile = isMobile(); - if (mobile) { - return null; - } - const installed = await isInstalled(); - - return { - id: "xdefi", - type: "injected", - metadata: { - name: "XDEFI Wallet", - description: "One wallet for all your Crypto", - iconUrl, - downloadUrl: "https://www.xdefi.io", - deprecated, - available: installed, - }, - init: XDEFI, - }; - }; -} diff --git a/packages/xdefi/tsconfig.json b/packages/xdefi/tsconfig.json deleted file mode 100644 index 8b6d6acaf..000000000 --- a/packages/xdefi/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/packages/xdefi/tsconfig.lib.json b/packages/xdefi/tsconfig.lib.json deleted file mode 100644 index e85ef50f6..000000000 --- a/packages/xdefi/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/packages/xdefi/tsconfig.spec.json b/packages/xdefi/tsconfig.spec.json deleted file mode 100644 index b506d384e..000000000 --- a/packages/xdefi/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.spec.ts"] -} diff --git a/tsconfig.base.json b/tsconfig.base.json index 702d746c7..06e18ab42 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,144 +1,12 @@ { - "compileOnSave": false, "compilerOptions": { - "rootDir": ".", - "sourceMap": true, - "declaration": false, + "module": "NodeNext", "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "importHelpers": true, - "allowSyntheticDefaultImports": true, - "target": "es2015", - "module": "esnext", - "lib": [ - "es2017", - "dom" - ], - "jsx": "react-jsx", + "target": "ESNext", + "lib": ["ES2020", "dom"], + "esModuleInterop": true, "skipLibCheck": true, - "skipDefaultLibCheck": true, - "baseUrl": ".", - "strictPropertyInitialization": false, - "paths": { - "@near-js/types": [ - "node_modules/@near-js/types" - ], - "@near-js/keystores": [ - "node_modules/@near-js/keystores" - ], - "@near-wallet-selector/account-export": [ - "packages/account-export/src/index.ts" - ], - "@near-wallet-selector/arepa-wallet": [ - "packages/arepa-wallet/src/index.ts" - ], - "@near-wallet-selector/bitget-wallet": [ - "packages/bitget-wallet/src/index.ts" - ], - "@near-wallet-selector/coin98-wallet": [ - "packages/coin98-wallet/src/index.ts" - ], - "@near-wallet-selector/core": [ - "packages/core/src/index.ts" - ], - "@near-wallet-selector/here-wallet": [ - "packages/here-wallet/src/index.ts" - ], - "@near-wallet-selector/ledger": [ - "packages/ledger/src/index.ts" - ], - "@near-wallet-selector/math-wallet": [ - "packages/math-wallet/src/index.ts" - ], - "@near-wallet-selector/meteor-wallet": [ - "packages/meteor-wallet/src/index.ts" - ], - "@near-wallet-selector/modal-ui": [ - "dist/packages/modal-ui" - ], - "@near-wallet-selector/modal-ui-js": [ - "packages/modal-ui-js/src/index.ts" - ], - "@near-wallet-selector/my-near-wallet": [ - "packages/my-near-wallet/src/index.ts" - ], - "@near-wallet-selector/narwallets": [ - "packages/narwallets/src/index.ts" - ], - "@near-wallet-selector/near-snap": [ - "packages/near-snap/src/index.ts" - ], - "@near-wallet-selector/nearfi": [ - "packages/nearfi/src/index.ts" - ], - "@near-wallet-selector/neth": [ - "packages/neth/src/index.ts" - ], - "@near-wallet-selector/nightly": [ - "packages/nightly/src/index.ts" - ], - "@near-wallet-selector/sender": [ - "packages/sender/src/index.ts" - ], - "@near-wallet-selector/wallet-connect": [ - "packages/wallet-connect/src/index.ts" - ], - "@near-wallet-selector/wallet-utils": [ - "packages/wallet-utils/src/index.ts" - ], - "@near-wallet-selector/welldone-wallet": [ - "packages/welldone-wallet/src/index.ts" - ], - "@near-wallet-selector/ramper-wallet": [ - "packages/ramper-wallet/src/index.ts" - ], - "@near-wallet-selector/xdefi": [ - "packages/xdefi/src/index.ts" - ], - "@near-wallet-selector/near-mobile-wallet": [ - "packages/near-mobile-wallet/src/index.ts" - ], - "@near-wallet-selector/mintbase-wallet": [ - "packages/mintbase-wallet/src/index.ts" - ], - "@near-wallet-selector/bitte-wallet": [ - "packages/bitte-wallet/src/index.ts" - ], - "@near-wallet-selector/okx-wallet": [ - "packages/okx-wallet/src/index.ts" - ], - "@near-wallet-selector/ethereum-wallets": [ - "packages/ethereum-wallets/src/index.ts" - ], - "crypto": [ - "node_modules/crypto-browserify" - ], - "http": [ - "node_modules/stream-http" - ], - "https": [ - "node_modules/https-browserify" - ], - "stream": [ - "node_modules/stream-browserify" - ], - "url": [ - "node_modules/url" - ], - "fs": [ - "node_modules/browserify-fs" - ], - "path": [ - "node_modules/path-browserify" - ], - "react": [ - "node_modules/@types/react" - ] - } + "resolveJsonModule": true, }, - "exclude": [ - "node_modules", - "tmp" - ] + "exclude": ["node_modules", "dist"] } diff --git a/yarn.lock b/yarn.lock index 60c24d448..dd1fe6231 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,23974 +1,30716 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@adobe/css-tools@^4.0.1": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" - integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== - -"@adraffy/ens-normalize@1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" - integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== - -"@ampproject/remapping@2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@angular-devkit/architect@0.1601.8": - version "0.1601.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1601.8.tgz#a3f73779caa0e16ff2497dd37e88f3c86c803992" - integrity sha512-kOXVGwsQnZvtz2UZNefcEy64Jiwq0eSoQUeozvDXOaYRJABLjPKI2YaarvKC9/Z1SGLuje0o/eRJO4T8aRk9rQ== - dependencies: - "@angular-devkit/core" "16.1.8" - rxjs "7.8.1" - -"@angular-devkit/build-angular@16.1.8": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-16.1.8.tgz#13b76c681942cfa758ffeb46308a19b69dc22de1" - integrity sha512-iyElPBQdcJq2plw5YqSz4mzNUfSRXI3ISFTEwPtimzPOorsj/OxB3Z6kJ8fDUsBAJ5OKR7xL7VnQJJ3S+05RhQ== - dependencies: - "@ampproject/remapping" "2.2.1" - "@angular-devkit/architect" "0.1601.8" - "@angular-devkit/build-webpack" "0.1601.8" - "@angular-devkit/core" "16.1.8" - "@babel/core" "7.22.5" - "@babel/generator" "7.22.7" - "@babel/helper-annotate-as-pure" "7.22.5" - "@babel/helper-split-export-declaration" "7.22.5" - "@babel/plugin-proposal-async-generator-functions" "7.20.7" - "@babel/plugin-transform-async-to-generator" "7.22.5" - "@babel/plugin-transform-runtime" "7.22.5" - "@babel/preset-env" "7.22.5" - "@babel/runtime" "7.22.5" - "@babel/template" "7.22.5" - "@discoveryjs/json-ext" "0.5.7" - "@ngtools/webpack" "16.1.8" - "@vitejs/plugin-basic-ssl" "1.0.1" - ansi-colors "4.1.3" - autoprefixer "10.4.14" - babel-loader "9.1.2" - babel-plugin-istanbul "6.1.1" - browserslist "^4.21.5" - cacache "17.1.3" - chokidar "3.5.3" - copy-webpack-plugin "11.0.0" - critters "0.0.20" - css-loader "6.8.1" - esbuild-wasm "0.17.19" - fast-glob "3.2.12" - https-proxy-agent "5.0.1" - inquirer "8.2.4" - jsonc-parser "3.2.0" - karma-source-map-support "1.4.0" - less "4.1.3" - less-loader "11.1.0" - license-webpack-plugin "4.0.2" - loader-utils "3.2.1" - magic-string "0.30.0" - mini-css-extract-plugin "2.7.6" - mrmime "1.0.1" - open "8.4.2" - ora "5.4.1" - parse5-html-rewriting-stream "7.0.0" - picomatch "2.3.1" - piscina "3.2.0" - postcss "8.4.24" - postcss-loader "7.3.2" - resolve-url-loader "5.0.0" - rxjs "7.8.1" - sass "1.63.2" - sass-loader "13.3.1" - semver "7.5.3" - source-map-loader "4.0.1" - source-map-support "0.5.21" - terser "5.17.7" - text-table "0.2.0" - tree-kill "1.2.2" - tslib "2.5.3" - vite "4.3.9" - webpack "5.86.0" - webpack-dev-middleware "6.1.1" - webpack-dev-server "4.15.0" - webpack-merge "5.9.0" - webpack-subresource-integrity "5.1.0" - optionalDependencies: - esbuild "0.17.19" - -"@angular-devkit/build-webpack@0.1601.8": - version "0.1601.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1601.8.tgz#92e347bb79e5d28b83e4a839968758abc3a466c4" - integrity sha512-LUMA3xNnN4IY/FPaqyF6rzba+QVxl3vA+v0l71CBIKNU+Qee6D9xe8KG0Bn7relqDhWZOSHY0nhhO2mBoz4iQg== - dependencies: - "@angular-devkit/architect" "0.1601.8" - rxjs "7.8.1" - -"@angular-devkit/core@15.2.8": - version "15.2.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-15.2.8.tgz#ff494ae7af137b0f0109deb8ee34f1550ed5cc1d" - integrity sha512-Lo4XrbDMtXarKnMrFgWLmQdSX+3QPNAg4otG8cmp/U4jJyjV4dAYKEAsb1sCNGUSM4h4v09EQU/5ugVjDU29lQ== - dependencies: - ajv "8.12.0" - ajv-formats "2.1.1" - jsonc-parser "3.2.0" - rxjs "6.6.7" - source-map "0.7.4" - -"@angular-devkit/core@16.1.8": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-16.1.8.tgz#f54bf179a78c6ea83ccd46687c54766d3ba674c9" - integrity sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw== - dependencies: - ajv "8.12.0" - ajv-formats "2.1.1" - jsonc-parser "3.2.0" - rxjs "7.8.1" - source-map "0.7.4" - -"@angular-devkit/schematics@15.2.8": - version "15.2.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-15.2.8.tgz#c7dfc692e3f54e43085a8845d8c9f390a2519aa3" - integrity sha512-w6EUGC96kVsH9f8sEzajzbONMawezyVBiSo+JYp5r25rQArAz/a+KZntbuETWHQ0rQOEsKmUNKxwmr11BaptSQ== - dependencies: - "@angular-devkit/core" "15.2.8" - jsonc-parser "3.2.0" - magic-string "0.29.0" - ora "5.4.1" - rxjs "6.6.7" - -"@angular-devkit/schematics@16.1.8": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-16.1.8.tgz#ab392d3a71bd50dcde25f9fbcee7e67d3965565d" - integrity sha512-6LyzMdFJs337RTxxkI2U1Ndw0CW5mMX/aXWl8d7cW2odiSrAg8IdlMqpc+AM8+CPfsB0FtS1aWkEZqJLT0jHOg== - dependencies: - "@angular-devkit/core" "16.1.8" - jsonc-parser "3.2.0" - magic-string "0.30.0" - ora "5.4.1" - rxjs "7.8.1" - -"@angular-eslint/bundled-angular-compiler@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-15.0.0.tgz#814d625b84c3f71ab5cdc83a4f9191bb4e4f7ddf" - integrity sha512-IFJFVCc3t+ujD8J6//RzYrtp7N9wUQhZnRUkd7pI7IpUT1XrQx5uNbDca9OLXM5F+HCHOQPIoaCyg3O/XJcc8Q== - -"@angular-eslint/eslint-plugin-template@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-15.0.0.tgz#0fd6db19df01e543402bd058bc3d70df9f2e659b" - integrity sha512-9i8BFnqhN1/xR1vZaeRUf48DWxgRnJDOXfJtNONkTUUsImXzShJUgFK++/YC6BeNRsZf0wPN/qpstuScwELJKA== - dependencies: - "@angular-eslint/bundled-angular-compiler" "15.0.0" - "@angular-eslint/utils" "15.0.0" - "@typescript-eslint/type-utils" "5.43.0" - "@typescript-eslint/utils" "5.43.0" - aria-query "5.1.3" - axobject-query "3.1.1" - -"@angular-eslint/eslint-plugin@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-15.0.0.tgz#bf5f8330e4de35654682f6383402962d208860d4" - integrity sha512-Yj/GeLQ+bBUgrIQDqa//nHrS9UvxZ1KQhavcK0xruuy29AYf+yolVdEGKvFNlpMoGRXkv2eMmWUkODS495DTYQ== - dependencies: - "@angular-eslint/utils" "15.0.0" - "@typescript-eslint/utils" "5.43.0" - -"@angular-eslint/template-parser@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-15.0.0.tgz#fcae7fa9c7994ac137fe9c8bce9f7e2fe40e30c0" - integrity sha512-tidZOhQ9ygXPyUwxXzXbEVJUiHRNF0oFu1Pf+hSlOwgjvRqCqVwXfDxEe6NjFEwRXsp0CtDgyseu7E9+ml+m6A== - dependencies: - "@angular-eslint/bundled-angular-compiler" "15.0.0" - eslint-scope "^7.0.0" - -"@angular-eslint/utils@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/utils/-/utils-15.0.0.tgz#d9607f74880b7c4183717bc77d5a31ff5eb1528d" - integrity sha512-+eI2vNixlxmwAH+vcF81DNtzZ1CJAe6e1yktT5Xmn/FUVWKe4hHQN95Km0H8G0epF8MovCJwmPdhFYwi/X8u3w== - dependencies: - "@angular-eslint/bundled-angular-compiler" "15.0.0" - "@typescript-eslint/utils" "5.43.0" - -"@angular/animations@16.1.9": - version "16.1.9" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-16.1.9.tgz#80c1eed2f147ea1e075eda26a065295a3947e06a" - integrity sha512-m7RREew0HWVAXnFrPBoV0J0d5wLvlMjqf/4YkrRSvQlAfic2pY+xKXjBxtSfb7QXl7d6/7htTLqKqmLRESkO3Q== - dependencies: - tslib "^2.3.0" - -"@angular/cli@16.1.8": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-16.1.8.tgz#8670dc296cc8b0edca6e50e02cacc173916ebc52" - integrity sha512-amOIHMq8EvixhnI+do5Bcy6IZSFAJx0njhhLM4ltDuNUczH8VH0hNegZKxhb8K87AMO8jITFM+NLrzccyghsDQ== - dependencies: - "@angular-devkit/architect" "0.1601.8" - "@angular-devkit/core" "16.1.8" - "@angular-devkit/schematics" "16.1.8" - "@schematics/angular" "16.1.8" - "@yarnpkg/lockfile" "1.1.0" - ansi-colors "4.1.3" - ini "4.1.1" - inquirer "8.2.4" - jsonc-parser "3.2.0" - npm-package-arg "10.1.0" - npm-pick-manifest "8.0.1" - open "8.4.2" - ora "5.4.1" - pacote "15.2.0" - resolve "1.22.2" - semver "7.5.3" - symbol-observable "4.0.0" - yargs "17.7.2" - -"@angular/common@16.1.9": - version "16.1.9" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-16.1.9.tgz#85f16dfc62c2c36c9afa66fe9ae09d9420a64a8e" - integrity sha512-mBetJ08synwk5nvtreek/ny5+KYPImKcr/8phdqWcL4dxfXH5HKh7afBJorPXe890BAF0LFmfVeTOmwrzZu6oA== - dependencies: - tslib "^2.3.0" - -"@angular/compiler-cli@16.1.8": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-16.1.8.tgz#1aec87e28cc06e6e1ebed66043a566767823f311" - integrity sha512-Whk3RBnEYwN0c6Mo7hU6JDpHSyKONmIQEN8ViHJXwmyHK8w+/Z27iBw10QiyWUMtYb4tIM1xSLhRFAwH/3WnPQ== - dependencies: - "@babel/core" "7.22.5" - "@jridgewell/sourcemap-codec" "^1.4.14" - chokidar "^3.0.0" - convert-source-map "^1.5.1" - reflect-metadata "^0.1.2" - semver "^7.0.0" - tslib "^2.3.0" - yargs "^17.2.1" - -"@angular/compiler@16.1.9": - version "16.1.9" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-16.1.9.tgz#bd577f1d37e570129ffa95b0fd65f879efcccd20" - integrity sha512-0gBvI6Eucah7r0TWxOg2YuZQjOWTO5dDbppeqZm90XRvjp+W4g+2A2EicdcLT6xasMeFslOTUIohS8eCddEglw== - dependencies: - tslib "^2.3.0" - -"@angular/core@16.1.9": - version "16.1.9" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-16.1.9.tgz#dcc4b3dd93a2f37980662951d4b67825617a9135" - integrity sha512-EPveq1kBb79/WtyAOiGeYgyh/we20TddbpQG23WZVjXHH0GoL6mmV2QHwQHOi9tYNeOneUz2bC3F88qbiacuOA== - dependencies: - tslib "^2.3.0" - -"@angular/forms@16.1.9": - version "16.1.9" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-16.1.9.tgz#5c278abdf57a25bb132fd80786fe888f90dfd566" - integrity sha512-WojLwxcJ9v2Mv7UEqbFM3GmLi9AGISPe1cqlnno22dZR/33XuK0OY1h/jIGj3WjwH4O++ksPa8NfJeJMRxLpsA== - dependencies: - tslib "^2.3.0" - -"@angular/language-service@15.2.9": - version "15.2.9" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-15.2.9.tgz#7a94e3394093a425c757f7b385b4a94edb09178a" - integrity sha512-B7lP4q/eHge2lZezOXS96EYzVf4stMCWfOnz7+pUUi0HbF+A5QCV65SWQddS/M+NM2jj8N2L/j+6UCH8lJjTQA== - -"@angular/platform-browser-dynamic@16.1.9": - version "16.1.9" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.1.9.tgz#15ebf6da939bef79a25f316235aae727f2281654" - integrity sha512-M+nRbLph8FecStiMTlkwAW/Tj9FzvT3gXP7gJDyFMz8lFmXRI2r4+r40Gx3jfA4+rQG0ArTq842aLBldi305Uw== - dependencies: - tslib "^2.3.0" - -"@angular/platform-browser@16.1.9": - version "16.1.9" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-16.1.9.tgz#8975ac118cbf698ce4ea739d08ee06d9962f413f" - integrity sha512-a3DKGIsPYF7Hz323oGYmibLfn9fim91r9J03Hib/p4PbhRquyA5drm4mWT6+6IUhlYZCm2z9y9NVfYGrkLS+fw== - dependencies: - tslib "^2.3.0" - -"@angular/router@16.1.9": - version "16.1.9" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-16.1.9.tgz#95a951b908882486273dc5d609b86bdf561314d4" - integrity sha512-73dFYwcYc6mmhjHDPJsZr2hbwDTNXDBYJ6cjNk9PPtMJe70ylL0MgTR3sMtibqlhvulUtjS1E0SsWMmqq3u8FA== - dependencies: - tslib "^2.3.0" - -"@assemblyscript/loader@^0.10.1": - version "0.10.1" - resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.10.1.tgz#70e45678f06c72fa2e350e8553ec4a4d72b92e06" - integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg== - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== - dependencies: - "@babel/highlight" "^7.24.7" - picocolors "^1.0.0" - -"@babel/code-frame@^7.23.5": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== - dependencies: - "@babel/highlight" "^7.24.2" - picocolors "^1.0.0" - -"@babel/compat-data@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.5.tgz#b1f6c86a02d85d2dd3368a2b67c09add8cd0c255" - integrity sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA== - -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" - integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== - -"@babel/compat-data@^7.23.5": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== - -"@babel/compat-data@^7.24.8": - version "7.24.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.9.tgz#53eee4e68f1c1d0282aa0eb05ddb02d033fc43a0" - integrity sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng== - -"@babel/core@7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89" - integrity sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helpers" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.15.0", "@babel/core@^7.19.6", "@babel/core@^7.23.9": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" - integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helpers" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/core@^7.15.5", "@babel/core@^7.20.12": - version "7.24.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.9.tgz#dc07c9d307162c97fa9484ea997ade65841c7c82" - integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.9" - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-module-transforms" "^7.24.9" - "@babel/helpers" "^7.24.8" - "@babel/parser" "^7.24.8" - "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.8" - "@babel/types" "^7.24.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@7.22.7": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.7.tgz#a6b8152d5a621893f2c9dacf9a4e286d520633d5" - integrity sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ== - dependencies: - "@babel/types" "^7.22.5" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.22.5", "@babel/generator@^7.24.8", "@babel/generator@^7.24.9": - version "7.24.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.10.tgz#a4ab681ec2a78bbb9ba22a3941195e28a81d8e76" - integrity sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg== - dependencies: - "@babel/types" "^7.24.9" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/generator@^7.24.7", "@babel/generator@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" - integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== - dependencies: - "@babel/types" "^7.24.7" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@7.22.5", "@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-annotate-as-pure@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" - integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" - integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-compilation-targets@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz#fc7319fc54c5e2fa14b2909cf3c5fd3046813e02" - integrity sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw== - dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - browserslist "^4.21.3" - lru-cache "^5.1.1" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" - integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== - dependencies: - "@babel/compat-data" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-compilation-targets@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz#b607c3161cd9d1744977d4f97139572fe778c271" - integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw== - dependencies: - "@babel/compat-data" "^7.24.8" - "@babel/helper-validator-option" "^7.24.8" - browserslist "^4.23.1" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b" - integrity sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-member-expression-to-functions" "^7.24.7" - "@babel/helper-optimise-call-expression" "^7.24.7" - "@babel/helper-replace-supers" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz#c806f73788a6800a5cfbbc04d2df7ee4d927cce3" - integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5", "@babel/helper-create-regexp-features-plugin@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz#be4f435a80dc2b053c76eeb4b7d16dd22cfc89da" - integrity sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz#64df615451cb30e94b59a9696022cffac9a10088" - integrity sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-define-polyfill-provider@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" - integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" - integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0", "@babel/helper-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-hoist-variables@^7.22.5", "@babel/helper-hoist-variables@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - dependencies: - "@babel/types" "^7.23.0" - -"@babel/helper-member-expression-to-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz#67613d068615a70e4ed5101099affc7a41c5225f" - integrity sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-imports@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" - integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.24.1": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" - -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.24.9": - version "7.24.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz#e13d26306b89eea569180868e652e7f514de9d29" - integrity sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-module-transforms@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" - integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-optimise-call-expression@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" - integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" - integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== - -"@babel/helper-plugin-utils@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" - integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== - -"@babel/helper-plugin-utils@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" - integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== - -"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz#b3f0f203628522713849d49403f1a414468be4c7" - integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-wrap-function" "^7.24.7" - -"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-replace-supers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz#f933b7eed81a1c0265740edc91491ce51250f765" - integrity sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-member-expression-to-functions" "^7.24.7" - "@babel/helper-optimise-call-expression" "^7.24.7" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" - integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-split-export-declaration@7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz#88cf11050edb95ed08d596f7a044462189127a08" - integrity sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-string-parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" - integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== - -"@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-identifier@^7.22.5": - version "7.22.19" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.19.tgz#2f34ab1e445f5b95e2e6edfe50ea2449e610583a" - integrity sha512-Tinq7ybnEPFFXhlYOYFiSjespWQk0dq2dRNAiMdRTOYQzEGqnnNyrTxPYHP5r6wGjlF1rFgABdDV0g8EwD6Qbg== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" - integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== - -"@babel/helper-validator-option@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" - integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helper-validator-option@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" - integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== - -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helper-wrap-function@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz#52d893af7e42edca7c6d2c6764549826336aae1f" - integrity sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw== - dependencies: - "@babel/helper-function-name" "^7.24.7" - "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helpers@^7.22.5", "@babel/helpers@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.8.tgz#2820d64d5d6686cca8789dd15b074cd862795873" - integrity sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.8" - -"@babel/helpers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" - integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/highlight@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" - integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" - integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== - -"@babel/parser@^7.22.15": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== - -"@babel/parser@^7.22.5", "@babel/parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.8.tgz#58a4dbbcad7eb1d48930524a3fd93d93e9084c6f" - integrity sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w== - -"@babel/parser@^7.24.0": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" - integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz#fd059fd27b184ea2b4c7e646868a9a381bbc3055" - integrity sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz#468096ca44bbcbe8fcc570574e12eb1950e18107" - integrity sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" - integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.7" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz#71b21bb0286d5810e63a1538aa901c58e87375ec" - integrity sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-proposal-async-generator-functions@7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" - integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-decorators@^7.14.5": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz#7e2dcfeda4a42596b57c4c9de1f5176bbfc532e3" - integrity sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-decorators" "^7.24.7" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz#e4f8a0a8778ccec669611cd5aed1ed8e6e3a6fcf" - integrity sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.20.0", "@babel/plugin-syntax-import-assertions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" - integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-import-attributes@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" - integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.24.7", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.24.7", "@babel/plugin-syntax-typescript@^7.3.3", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" - integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-arrow-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" - integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-async-generator-functions@^7.22.5": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-generator-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz#7330a5c50e05181ca52351b8fd01642000c96cfd" - integrity sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-remap-async-to-generator" "^7.24.7" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== - dependencies: - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" - -"@babel/plugin-transform-async-to-generator@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== - dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - -"@babel/plugin-transform-async-to-generator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" - integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-remap-async-to-generator" "^7.24.7" - -"@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-block-scoped-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" - integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-block-scoping@^7.22.5": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz#28f5c010b66fbb8ccdeef853bef1935c434d7012" - integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-block-scoping@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz#42063e4deb850c7bd7c55e626bf4e7ab48e6ce02" - integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-class-properties@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-class-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" - integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-class-static-block@^7.22.5": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-class-static-block@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" - integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1" - integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz#4ae6ef43a12492134138c1e45913f7c46c41b4bf" - integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-replace-supers" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz#ad23301fe5bc153ca4cf7fb572a9bc8b0b711cf7" - integrity sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-replace-supers" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" - -"@babel/plugin-transform-computed-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" - integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/template" "^7.24.7" - -"@babel/plugin-transform-destructuring@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345" - integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-destructuring@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz#a097f25292defb6e6cc16d6333a4cfc1e3c72d9e" - integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-destructuring@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" - integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - -"@babel/plugin-transform-dotall-regex@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-dotall-regex@^7.24.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" - integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-duplicate-keys@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" - integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-dynamic-import@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-dynamic-import@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" - integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-exponentiation-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" - integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-export-namespace-from@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-export-namespace-from@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" - integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-for-of@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" - integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - -"@babel/plugin-transform-function-name@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== - dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz#6d8601fbffe665c894440ab4470bc721dd9131d6" - integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== - dependencies: - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-json-strings@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-json-strings@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" - integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c" - integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-logical-assignment-operators@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-logical-assignment-operators@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" - integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-member-expression-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" - integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-modules-amd@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-modules-amd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" - integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== - dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-modules-commonjs@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-commonjs@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz#9fd5f7fdadee9085886b183f1ad13d1ab260f4ab" - integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== - dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - -"@babel/plugin-transform-modules-commonjs@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" - integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== - dependencies: - "@babel/helper-module-transforms" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-simple-access" "^7.24.7" - -"@babel/plugin-transform-modules-systemjs@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-systemjs@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz#f8012316c5098f6e8dee6ecd58e2bc6f003d0ce7" - integrity sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw== - dependencies: - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - -"@babel/plugin-transform-modules-umd@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-modules-umd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" - integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== - dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" - integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-new-target@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-new-target@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" - integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" - integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-numeric-separator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" - integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff" - integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== - dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.1" - -"@babel/plugin-transform-object-rest-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" - integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== - dependencies: - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.7" - -"@babel/plugin-transform-object-super@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - -"@babel/plugin-transform-object-super@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" - integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-replace-supers" "^7.24.7" - -"@babel/plugin-transform-optional-catch-binding@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-catch-binding@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" - integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz#1003762b9c14295501beb41be72426736bedd1e0" - integrity sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6" - integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz#b8f6848a80cf2da98a8a204429bec04756c6d454" - integrity sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" - integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.22.5", "@babel/plugin-transform-parameters@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" - integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-parameters@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" - integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-private-methods@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-private-methods@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" - integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-private-property-in-object@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a" - integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-private-property-in-object@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" - integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-property-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" - integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-react-constant-elements@^7.14.5", "@babel/plugin-transform-react-constant-elements@^7.18.12": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.7.tgz#b85e8f240b14400277f106c9c9b585d9acf608a1" - integrity sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-react-display-name@^7.16.7", "@babel/plugin-transform-react-display-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b" - integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-react-jsx-development@^7.16.7", "@babel/plugin-transform-react-jsx-development@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" - integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.24.7" - -"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz#17cd06b75a9f0e2bd076503400e7c4b99beedac4" - integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-jsx" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/plugin-transform-react-pure-annotations@^7.16.7", "@babel/plugin-transform-react-pure-annotations@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" - integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-regenerator@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-regenerator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" - integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-reserved-words@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" - integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-runtime@7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.5.tgz#ca975fb5e260044473c8142e1b18b567d33c2a3b" - integrity sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw== - dependencies: - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.3" - babel-plugin-polyfill-corejs3 "^0.8.1" - babel-plugin-polyfill-regenerator "^0.5.0" - semver "^6.3.0" - -"@babel/plugin-transform-runtime@^7.15.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz#00a5bfaf8c43cf5c8703a8a6e82b59d9c58f38ca" - integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" - babel-plugin-polyfill-regenerator "^0.6.1" - semver "^6.3.1" - -"@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-shorthand-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" - integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-spread@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" - integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - -"@babel/plugin-transform-sticky-regex@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-sticky-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" - integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-template-literals@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-template-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" - integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-typeof-symbol@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7" - integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-typeof-symbol@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz#f074be466580d47d6e6b27473a840c9f9ca08fb0" - integrity sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-typeof-symbol@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" - integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - -"@babel/plugin-transform-typescript@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz#b006b3e0094bf0813d505e0c5485679eeaf4a881" - integrity sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-typescript" "^7.24.7" - -"@babel/plugin-transform-unicode-escapes@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-escapes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" - integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-property-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" - integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" - integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-sets-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" - integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/preset-env@7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.5.tgz#3da66078b181f3d62512c51cf7014392c511504e" - integrity sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A== - dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.5" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.5" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.5" - "@babel/plugin-transform-classes" "^7.22.5" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.5" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.5" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.5" - "@babel/plugin-transform-for-of" "^7.22.5" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.5" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-modules-systemjs" "^7.22.5" - "@babel/plugin-transform-modules-umd" "^7.22.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" - "@babel/plugin-transform-numeric-separator" "^7.22.5" - "@babel/plugin-transform-object-rest-spread" "^7.22.5" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.5" - "@babel/plugin-transform-parameters" "^7.22.5" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.5" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.5" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.5" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.3" - babel-plugin-polyfill-corejs3 "^0.8.1" - babel-plugin-polyfill-regenerator "^0.5.0" - core-js-compat "^3.30.2" - semver "^6.3.0" - -"@babel/preset-env@^7.15.0", "@babel/preset-env@^7.19.4": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.7.tgz#ff067b4e30ba4a72f225f12f123173e77b987f37" - integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== - dependencies: - "@babel/compat-data" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.7" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.7" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.7" - "@babel/plugin-transform-async-generator-functions" "^7.24.7" - "@babel/plugin-transform-async-to-generator" "^7.24.7" - "@babel/plugin-transform-block-scoped-functions" "^7.24.7" - "@babel/plugin-transform-block-scoping" "^7.24.7" - "@babel/plugin-transform-class-properties" "^7.24.7" - "@babel/plugin-transform-class-static-block" "^7.24.7" - "@babel/plugin-transform-classes" "^7.24.7" - "@babel/plugin-transform-computed-properties" "^7.24.7" - "@babel/plugin-transform-destructuring" "^7.24.7" - "@babel/plugin-transform-dotall-regex" "^7.24.7" - "@babel/plugin-transform-duplicate-keys" "^7.24.7" - "@babel/plugin-transform-dynamic-import" "^7.24.7" - "@babel/plugin-transform-exponentiation-operator" "^7.24.7" - "@babel/plugin-transform-export-namespace-from" "^7.24.7" - "@babel/plugin-transform-for-of" "^7.24.7" - "@babel/plugin-transform-function-name" "^7.24.7" - "@babel/plugin-transform-json-strings" "^7.24.7" - "@babel/plugin-transform-literals" "^7.24.7" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" - "@babel/plugin-transform-member-expression-literals" "^7.24.7" - "@babel/plugin-transform-modules-amd" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.7" - "@babel/plugin-transform-modules-systemjs" "^7.24.7" - "@babel/plugin-transform-modules-umd" "^7.24.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" - "@babel/plugin-transform-new-target" "^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" - "@babel/plugin-transform-numeric-separator" "^7.24.7" - "@babel/plugin-transform-object-rest-spread" "^7.24.7" - "@babel/plugin-transform-object-super" "^7.24.7" - "@babel/plugin-transform-optional-catch-binding" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.7" - "@babel/plugin-transform-parameters" "^7.24.7" - "@babel/plugin-transform-private-methods" "^7.24.7" - "@babel/plugin-transform-private-property-in-object" "^7.24.7" - "@babel/plugin-transform-property-literals" "^7.24.7" - "@babel/plugin-transform-regenerator" "^7.24.7" - "@babel/plugin-transform-reserved-words" "^7.24.7" - "@babel/plugin-transform-shorthand-properties" "^7.24.7" - "@babel/plugin-transform-spread" "^7.24.7" - "@babel/plugin-transform-sticky-regex" "^7.24.7" - "@babel/plugin-transform-template-literals" "^7.24.7" - "@babel/plugin-transform-typeof-symbol" "^7.24.7" - "@babel/plugin-transform-unicode-escapes" "^7.24.7" - "@babel/plugin-transform-unicode-property-regex" "^7.24.7" - "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-env@^7.15.6": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.8.tgz#e0db94d7f17d6f0e2564e8d29190bc8cdacec2d1" - integrity sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ== - dependencies: - "@babel/compat-data" "^7.24.8" - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-validator-option" "^7.24.8" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.7" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.7" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.7" - "@babel/plugin-transform-async-generator-functions" "^7.24.7" - "@babel/plugin-transform-async-to-generator" "^7.24.7" - "@babel/plugin-transform-block-scoped-functions" "^7.24.7" - "@babel/plugin-transform-block-scoping" "^7.24.7" - "@babel/plugin-transform-class-properties" "^7.24.7" - "@babel/plugin-transform-class-static-block" "^7.24.7" - "@babel/plugin-transform-classes" "^7.24.8" - "@babel/plugin-transform-computed-properties" "^7.24.7" - "@babel/plugin-transform-destructuring" "^7.24.8" - "@babel/plugin-transform-dotall-regex" "^7.24.7" - "@babel/plugin-transform-duplicate-keys" "^7.24.7" - "@babel/plugin-transform-dynamic-import" "^7.24.7" - "@babel/plugin-transform-exponentiation-operator" "^7.24.7" - "@babel/plugin-transform-export-namespace-from" "^7.24.7" - "@babel/plugin-transform-for-of" "^7.24.7" - "@babel/plugin-transform-function-name" "^7.24.7" - "@babel/plugin-transform-json-strings" "^7.24.7" - "@babel/plugin-transform-literals" "^7.24.7" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" - "@babel/plugin-transform-member-expression-literals" "^7.24.7" - "@babel/plugin-transform-modules-amd" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.8" - "@babel/plugin-transform-modules-systemjs" "^7.24.7" - "@babel/plugin-transform-modules-umd" "^7.24.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" - "@babel/plugin-transform-new-target" "^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" - "@babel/plugin-transform-numeric-separator" "^7.24.7" - "@babel/plugin-transform-object-rest-spread" "^7.24.7" - "@babel/plugin-transform-object-super" "^7.24.7" - "@babel/plugin-transform-optional-catch-binding" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.8" - "@babel/plugin-transform-parameters" "^7.24.7" - "@babel/plugin-transform-private-methods" "^7.24.7" - "@babel/plugin-transform-private-property-in-object" "^7.24.7" - "@babel/plugin-transform-property-literals" "^7.24.7" - "@babel/plugin-transform-regenerator" "^7.24.7" - "@babel/plugin-transform-reserved-words" "^7.24.7" - "@babel/plugin-transform-shorthand-properties" "^7.24.7" - "@babel/plugin-transform-spread" "^7.24.7" - "@babel/plugin-transform-sticky-regex" "^7.24.7" - "@babel/plugin-transform-template-literals" "^7.24.7" - "@babel/plugin-transform-typeof-symbol" "^7.24.8" - "@babel/plugin-transform-unicode-escapes" "^7.24.7" - "@babel/plugin-transform-unicode-property-regex" "^7.24.7" - "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.37.1" - semver "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-modules@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" - integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" - integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-react-display-name" "^7.16.7" - "@babel/plugin-transform-react-jsx" "^7.16.7" - "@babel/plugin-transform-react-jsx-development" "^7.16.7" - "@babel/plugin-transform-react-pure-annotations" "^7.16.7" - -"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.18.6": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc" - integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-transform-react-display-name" "^7.24.7" - "@babel/plugin-transform-react-jsx" "^7.24.7" - "@babel/plugin-transform-react-jsx-development" "^7.24.7" - "@babel/plugin-transform-react-pure-annotations" "^7.24.7" - -"@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.18.6": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" - integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-syntax-jsx" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.7" - "@babel/plugin-transform-typescript" "^7.24.7" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime-corejs3@^7.10.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.24.7.tgz#65a99097e4c28e6c3a174825591700cc5abd710e" - integrity sha512-eytSX6JLBY6PVAeQa2bFlDx/7Mmln/gaEpsit5a3WEvjGfiIytEsgAwuIXCPM0xvw0v0cJn3ilq0/TvXrW0kgA== - dependencies: - core-js-pure "^3.30.2" - regenerator-runtime "^0.14.0" - -"@babel/runtime@7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" - integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/runtime@7.24.8", "@babel/runtime@^7.23.2": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" - integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.8", "@babel/runtime@^7.18.9", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" - integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.19.4": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" - integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.21.0": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" - integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" - integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== - dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" - -"@babel/template@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/template@^7.22.5", "@babel/template@^7.24.7", "@babel/template@^7.3.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" - integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/template@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.16.0", "@babel/traverse@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" - integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@^7.22.5", "@babel/traverse@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.8.tgz#6c14ed5232b7549df3371d820fbd9abfcd7dfab7" - integrity sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.8" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/parser" "^7.24.8" - "@babel/types" "^7.24.8" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" - integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== - dependencies: - "@babel/helper-string-parser" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.15": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" - integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.19", "@babel/types@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" - integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" - to-fast-properties "^2.0.0" - -"@babel/types@^7.23.0", "@babel/types@^7.24.8", "@babel/types@^7.24.9": - version "7.24.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.9.tgz#228ce953d7b0d16646e755acf204f4cf3d08cc73" - integrity sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ== - dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@chainsafe/is-ip@^2.0.1": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chainsafe/is-ip/-/is-ip-2.0.2.tgz#7311e7403f11d8c5cfa48111f56fcecaac37c9f6" - integrity sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA== - -"@chainsafe/netmask@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@chainsafe/netmask/-/netmask-2.0.0.tgz#0d4a75f47919f65011da4327a3845c9661f1038a" - integrity sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg== - dependencies: - "@chainsafe/is-ip" "^2.0.1" - -"@coinbase/wallet-sdk@4.0.4": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.0.4.tgz#634cd89bac93eeaf381a1f026476794e53431ed6" - integrity sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA== - dependencies: - buffer "^6.0.3" - clsx "^1.2.1" - eventemitter3 "^5.0.1" - keccak "^3.0.3" - preact "^10.16.0" - sha.js "^2.4.11" - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@cypress/request@^2.88.10": - version "2.88.12" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590" - integrity sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA== - 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" - http-signature "~1.3.6" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - performance-now "^2.1.0" - qs "~6.10.3" - safe-buffer "^5.1.2" - tough-cookie "^4.1.3" - tunnel-agent "^0.6.0" - uuid "^8.3.2" - -"@cypress/xvfb@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" - integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== - dependencies: - debug "^3.1.0" - lodash.once "^4.1.1" - -"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@esbuild/aix-ppc64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz#145b74d5e4a5223489cabdc238d8dad902df5259" - integrity sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ== - -"@esbuild/android-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@esbuild/android-arm64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz#453bbe079fc8d364d4c5545069e8260228559832" - integrity sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ== - -"@esbuild/android-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@esbuild/android-arm@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.0.tgz#26c806853aa4a4f7e683e519cd9d68e201ebcf99" - integrity sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g== - -"@esbuild/android-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@esbuild/android-x64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.0.tgz#1e51af9a6ac1f7143769f7ee58df5b274ed202e6" - integrity sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ== - -"@esbuild/darwin-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@esbuild/darwin-arm64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz#d996187a606c9534173ebd78c58098a44dd7ef9e" - integrity sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow== - -"@esbuild/darwin-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@esbuild/darwin-x64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz#30c8f28a7ef4e32fe46501434ebe6b0912e9e86c" - integrity sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ== - -"@esbuild/freebsd-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@esbuild/freebsd-arm64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz#30f4fcec8167c08a6e8af9fc14b66152232e7fb4" - integrity sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw== - -"@esbuild/freebsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@esbuild/freebsd-x64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz#1003a6668fe1f5d4439e6813e5b09a92981bc79d" - integrity sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ== - -"@esbuild/linux-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@esbuild/linux-arm64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz#3b9a56abfb1410bb6c9138790f062587df3e6e3a" - integrity sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw== - -"@esbuild/linux-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@esbuild/linux-arm@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz#237a8548e3da2c48cd79ae339a588f03d1889aad" - integrity sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw== - -"@esbuild/linux-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@esbuild/linux-ia32@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz#4269cd19cb2de5de03a7ccfc8855dde3d284a238" - integrity sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@esbuild/linux-loong64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz#82b568f5658a52580827cc891cb69d2cb4f86280" - integrity sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A== - -"@esbuild/linux-mips64el@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@esbuild/linux-mips64el@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz#9a57386c926262ae9861c929a6023ed9d43f73e5" - integrity sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w== - -"@esbuild/linux-ppc64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@esbuild/linux-ppc64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz#f3a79fd636ba0c82285d227eb20ed8e31b4444f6" - integrity sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw== - -"@esbuild/linux-riscv64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@esbuild/linux-riscv64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz#f9d2ef8356ce6ce140f76029680558126b74c780" - integrity sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw== - -"@esbuild/linux-s390x@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@esbuild/linux-s390x@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz#45390f12e802201f38a0229e216a6aed4351dfe8" - integrity sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg== - -"@esbuild/linux-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@esbuild/linux-x64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz#c8409761996e3f6db29abcf9b05bee8d7d80e910" - integrity sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ== - -"@esbuild/netbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@esbuild/netbsd-x64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz#ba70db0114380d5f6cfb9003f1d378ce989cd65c" - integrity sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw== - -"@esbuild/openbsd-arm64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz#72fc55f0b189f7a882e3cf23f332370d69dfd5db" - integrity sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ== - -"@esbuild/openbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@esbuild/openbsd-x64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz#b6ae7a0911c18fe30da3db1d6d17a497a550e5d8" - integrity sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg== - -"@esbuild/sunos-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@esbuild/sunos-x64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz#58f0d5e55b9b21a086bfafaa29f62a3eb3470ad8" - integrity sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA== - -"@esbuild/win32-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@esbuild/win32-arm64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz#b858b2432edfad62e945d5c7c9e5ddd0f528ca6d" - integrity sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ== - -"@esbuild/win32-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@esbuild/win32-ia32@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz#167ef6ca22a476c6c0c014a58b4f43ae4b80dec7" - integrity sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA== - -"@esbuild/win32-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== - -"@esbuild/win32-x64@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz#db44a6a08520b5f25bbe409f34a59f2d4bcc7ced" - integrity sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g== - -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.4.0": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" - integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== - -"@eslint/eslintrc@^1.2.3": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" - integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.4.0" - globals "^13.19.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" - -"@ethereumjs/common@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.2.0.tgz#b71df25845caf5456449163012074a55f048e0a0" - integrity sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA== - dependencies: - "@ethereumjs/util" "^8.1.0" - crc-32 "^1.2.0" - -"@ethereumjs/rlp@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" - integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== - -"@ethereumjs/tx@^4.1.2", "@ethereumjs/tx@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.2.0.tgz#5988ae15daf5a3b3c815493bc6b495e76009e853" - integrity sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw== - dependencies: - "@ethereumjs/common" "^3.2.0" - "@ethereumjs/rlp" "^4.0.1" - "@ethereumjs/util" "^8.1.0" - ethereum-cryptography "^2.0.0" - -"@ethereumjs/util@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" - integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== - dependencies: - "@ethereumjs/rlp" "^4.0.1" - ethereum-cryptography "^2.0.0" - micro-ftch "^0.3.1" - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - -"@ethersproject/contracts@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/providers@5.7.2": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - -"@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/json-wallets" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== - dependencies: - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@fastify/busboy@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" - integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== - -"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== - -"@here-wallet/core@3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@here-wallet/core/-/core-3.3.1.tgz#41af535794903d4ac04ef06ac0bbee7b7bbaef8b" - integrity sha512-UcokwayE9J8HR+QUHotvpFGcZ6Xlpc1sjyzSOOeknkt2se56anJZdIPczhkwwNfYR7qAOj2fo3LTLbnmfj7GwA== - dependencies: - "@near-js/accounts" "^1.2.1" - "@near-js/crypto" "^1.2.4" - "@near-js/types" "^0.2.1" - "@near-js/utils" "^0.2.2" - js-sha256 "^0.11.0" - sha1 "^1.1.1" - uuid4 "2.0.3" - -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@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== - -"@hutson/parse-repository-url@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz#bf344cc75136039bc41bcf5d1ddbcb40405fca3b" - integrity sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg== - -"@improbable-eng/grpc-web@^0.15.0": - version "0.15.0" - resolved "https://registry.yarnpkg.com/@improbable-eng/grpc-web/-/grpc-web-0.15.0.tgz#3e47e9fdd90381a74abd4b7d26e67422a2a04bef" - integrity sha512-ERft9/0/8CmYalqOVnJnpdDry28q+j+nAlFFARdjyxXDJ+Mhgv9+F600QC8BR9ygOfrXRlAk6CvST2j+JCpQPg== - dependencies: - browser-headers "^0.4.1" - -"@ipld/dag-cbor@^8.0.0": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-8.0.1.tgz#3042c219dd85a71d66ca6946fb6c7b6f0d519369" - integrity sha512-mHRuzgGXNk0Y5W7nNQdN37qJiig1Kdgf92icBVFRUNtBc9Ezl5DIdWfiGWBucHBrhqPBncxoH3As9cHPIRozxA== - dependencies: - cborg "^1.6.0" - multiformats "^11.0.0" - -"@ipld/dag-json@^9.0.0": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-9.1.1.tgz#a24156cb040149d5955dbd28e3c08828c2292719" - integrity sha512-L0l+Osi8zAWUw2L/fWJjeZ75l7XojD0Mud1Xvo32q8AJeVuqvCQFdqqIFBiq8MwuqC8qS8kbysro3w5mphUiDQ== - dependencies: - cborg "^1.5.4" - multiformats "^11.0.0" - -"@ipld/dag-pb@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-3.0.2.tgz#80996ca7cb1d8f6c6df0b74fbf1235744b1f76c5" - integrity sha512-ge+llKU/CNc6rX5ZcUhCrPXJjKjN1DsolDOJ99zOsousGOhepoIgvT01iAP8s7QN9QFciOE+a1jHdccs+CyhBA== - dependencies: - multiformats "^11.0.0" - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@isaacs/string-locale-compare@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" - integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.4.1", "@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.4.1", "@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.4.3", "@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/source-map@^0.3.3": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" - integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jscutlery/semver@5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@jscutlery/semver/-/semver-5.3.1.tgz#6a7f0ba7ce40802e0101ea8ac5b155b0031e0c74" - integrity sha512-LJk85tsYnISmRBQid4fjavBYUN8W5QwVQrcZ9KuTv+/D8Qy1A3wbMcc0kfBnnsGwFcKjYTwr4/eGJ/i1HgVk2Q== - dependencies: - chalk "4.1.2" - conventional-changelog "^5.1.0" - conventional-changelog-angular "^7.0.0" - conventional-changelog-atom "^4.0.0" - conventional-changelog-codemirror "^4.0.0" - conventional-changelog-conventionalcommits "^7.0.2" - conventional-changelog-ember "^4.0.0" - conventional-changelog-eslint "^5.0.0" - conventional-changelog-express "^4.0.0" - conventional-changelog-jquery "^5.0.0" - conventional-changelog-jshint "^4.0.0" - conventional-commits-parser "^5.0.0" - conventional-recommended-bump "^9.0.0" - detect-indent "6.1.0" - git-semver-tags "^7.0.1" - inquirer "8.2.6" - rxjs "7.8.1" - -"@jsdoc/salty@^0.2.1": - version "0.2.8" - resolved "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.8.tgz#8d29923a9429694a437a50ab75004b576131d597" - integrity sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg== - dependencies: - lodash "^4.17.21" - -"@jspm/generator@^1.1.10": - version "1.1.12" - resolved "https://registry.yarnpkg.com/@jspm/generator/-/generator-1.1.12.tgz#9da06c09a0e1fe8a84cf08e71be5b118f59c499c" - integrity sha512-CJOecpvY5mzCGnnAEiKOnzuzX6UjFm9kpi6ZCc9jND5m59Dvy6S/2B/ONty8EKHPeLvgpH5jAZ8QH66NdIpJ1A== - dependencies: - "@babel/core" "^7.20.12" - "@babel/plugin-syntax-import-assertions" "^7.20.0" - "@babel/preset-typescript" "^7.18.6" - "@jspm/import-map" "^1.0.7" - abort-controller "^3.0.0" - es-module-lexer "^1.1.1" - ipfs-client "^0.9.2" - make-fetch-happen "^8.0.14" - rimraf "^4.1.2" - sver "^1.8.4" - -"@jspm/import-map@^1.0.7": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@jspm/import-map/-/import-map-1.1.0.tgz#1faf1209d6c2631d67e1520097f797c6947d8464" - integrity sha512-vmk583YnMi4fmqeXbWIBiyzFu+vqVZ5VCoaa6H4xeSQy5E6JAWtmcq72OAMFTeSTqw7xxHQIJFq2OlHKdUWitQ== - -"@ledgerhq/devices@^8.2.0": - version "8.4.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.4.0.tgz#f3a03576d4a53d731bdaa212a00bd0adbfb86fb1" - integrity sha512-TUrMlWZJ+5AFp2lWMw4rGQoU+WtjIqlFX5SzQDL9phaUHrt4TFierAGHsaj5+tUHudhD4JhIaLI2cn1NOyq5NQ== - dependencies: - "@ledgerhq/errors" "^6.17.0" - "@ledgerhq/logs" "^6.12.0" - rxjs "^7.8.1" - semver "^7.3.5" - -"@ledgerhq/devices@^8.4.2": - version "8.4.2" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.4.2.tgz#f1c56194cf1343d56cad49c8feba92ad93432e14" - integrity sha512-oWNTp3jCMaEvRHsXNYE/yo+PFMgXAJGFHLOU1UdE4/fYkniHbD9wdxwyZrZvrxr9hNw4/9wHiThyITwPtMzG7g== - dependencies: - "@ledgerhq/errors" "^6.18.0" - "@ledgerhq/logs" "^6.12.0" - rxjs "^7.8.1" - semver "^7.3.5" - -"@ledgerhq/errors@^6.16.1", "@ledgerhq/errors@^6.17.0": - version "6.17.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.17.0.tgz#0d56361fe6eb7de3b239e661710679f933f1fcca" - integrity sha512-xnOVpy/gUUkusEORdr2Qhw3Vd0MGfjyVGgkGR9Ck6FXE26OIdIQ3tNmG5BdZN+gwMMFJJVxxS4/hr0taQfZ43w== - -"@ledgerhq/errors@^6.18.0": - version "6.18.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.18.0.tgz#d55d6a57430d7a86532a9033ce0b45103264c620" - integrity sha512-L3jQWAGyooxRDk/MRlW2v4Ji9+kloBtdmz9wBkHaj2j0n+05rweJSV3GHw9oye1BYMbVFqFffmT4H3hlXlCasw== - -"@ledgerhq/hw-transport-webhid@6.29.2": - version "6.29.2" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-6.29.2.tgz#8ffd83a9b01377f941668aa97456799493754790" - integrity sha512-kmVsctlR3rpHmxpT2SB1mEayrBMXCc3Fb+VT9xZnpcZhMSXVDA+AdpuXamJkGl2ow72JDN+QcSPfoVT1entXwA== - dependencies: - "@ledgerhq/devices" "^8.4.2" - "@ledgerhq/errors" "^6.18.0" - "@ledgerhq/hw-transport" "^6.31.2" - "@ledgerhq/logs" "^6.12.0" - -"@ledgerhq/hw-transport@6.30.3": - version "6.30.3" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.30.3.tgz#5904adb57ac4459e219551aa97ce2d0772393f2b" - integrity sha512-eqtTCGy8wFCxl+hZSEpjVqn1EDjQhFCne/qUyY0aA36efhWUF6bCRAhkq1e5i7g2P6TbxcIM5P5PW67dILuqIQ== - dependencies: - "@ledgerhq/devices" "^8.2.0" - "@ledgerhq/errors" "^6.16.1" - "@ledgerhq/logs" "^6.12.0" - events "^3.3.0" - -"@ledgerhq/hw-transport@^6.31.2": - version "6.31.2" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.31.2.tgz#79c95f7928a64a0e3b5bc4ea7b5be04b9f738322" - integrity sha512-B27UIzMzm2IXPGYnEB95R7eHxpXBkTBHh6MUJJQZVknt8LilEz1tfpTYUdzAKDGQ+Z5MZyYb01Eh3Zqm3kn3uw== - dependencies: - "@ledgerhq/devices" "^8.4.2" - "@ledgerhq/errors" "^6.18.0" - "@ledgerhq/logs" "^6.12.0" - events "^3.3.0" - -"@ledgerhq/logs@^6.12.0": - version "6.12.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.12.0.tgz#ad903528bf3687a44da435d7b2479d724d374f5d" - integrity sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA== - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" - integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== - -"@lezer/common@^1.0.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049" - integrity sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ== - -"@lezer/lr@^1.0.0": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.1.tgz#fe25f051880a754e820b28148d90aa2a96b8bdd2" - integrity sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw== - dependencies: - "@lezer/common" "^1.0.0" - -"@libp2p/interface-connection@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@libp2p/interface-connection/-/interface-connection-4.0.0.tgz#fcc830ca891820fac89a4c6bd4fcc2df4874f49b" - integrity sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg== - dependencies: - "@libp2p/interface-peer-id" "^2.0.0" - "@libp2p/interfaces" "^3.0.0" - "@multiformats/multiaddr" "^12.0.0" - it-stream-types "^1.0.4" - uint8arraylist "^2.1.2" - -"@libp2p/interface-keychain@^1.0.3": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@libp2p/interface-keychain/-/interface-keychain-1.0.8.tgz#c0785935f93900f3e03edece4a9d11dc877f8436" - integrity sha512-JqI7mMthIafP8cGhhsmIs/M0Ey+ivHLcpzqbVVzMFiFVi1dC03R7EHlalcaPn8yaLSvlmI0MqjC8lJYuvlFjfw== - dependencies: - multiformats "^10.0.0" - -"@libp2p/interface-peer-id@^1.0.0", "@libp2p/interface-peer-id@^1.0.4": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-id/-/interface-peer-id-1.1.2.tgz#22cbfb4707949cd49c3271a871172221d6920049" - integrity sha512-S5iyVzG2EUgxm4NLe8W4ya9kpKuGfHs7Wbbos0wOUB4GXsbIKgOOxIr4yf+xGFgtEBaoximvlLkpob6dn8VFgA== - dependencies: - multiformats "^10.0.0" - -"@libp2p/interface-peer-id@^2.0.0", "@libp2p/interface-peer-id@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-id/-/interface-peer-id-2.0.2.tgz#6302e70b6fc17c451bc3daa11447d059357bcc32" - integrity sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg== - dependencies: - multiformats "^11.0.0" - -"@libp2p/interface-peer-info@^1.0.2": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-info/-/interface-peer-info-1.0.10.tgz#566026de95a0817b9e853c982b313541b7960c0b" - integrity sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg== - dependencies: - "@libp2p/interface-peer-id" "^2.0.0" - "@multiformats/multiaddr" "^12.0.0" - -"@libp2p/interface-pubsub@^3.0.0": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@libp2p/interface-pubsub/-/interface-pubsub-3.0.7.tgz#cc1c7c47c883daddd2b84d83d719b3826943be3b" - integrity sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA== - dependencies: - "@libp2p/interface-connection" "^4.0.0" - "@libp2p/interface-peer-id" "^2.0.0" - "@libp2p/interfaces" "^3.0.0" - it-pushable "^3.0.0" - uint8arraylist "^2.1.2" - -"@libp2p/interface@^1.0.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-1.6.1.tgz#dc8f1a49da7ee81cd068e872bde3445c3b631d45" - integrity sha512-bpkIYTvZhGGc/ajITKvgFpaP8UtPWoSj+xHVrj6zyAN8U/cAqN0IQQt4a7daJr5VZa8B86i4d1iccdG42/mz+g== - dependencies: - "@multiformats/multiaddr" "^12.2.3" - it-pushable "^3.2.3" - it-stream-types "^2.0.1" - multiformats "^13.1.0" - progress-events "^1.0.0" - uint8arraylist "^2.4.8" - -"@libp2p/interfaces@^3.0.0": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@libp2p/interfaces/-/interfaces-3.3.2.tgz#5d8079be845b0960939b5b18880e785a4714465a" - integrity sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g== - -"@libp2p/logger@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-2.1.1.tgz#e12e6c320ea64252af954bcec996895098d1cd36" - integrity sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA== - dependencies: - "@libp2p/interface-peer-id" "^2.0.2" - "@multiformats/multiaddr" "^12.1.3" - debug "^4.3.4" - interface-datastore "^8.2.0" - multiformats "^11.0.2" - -"@libp2p/peer-id@^1.1.10": - version "1.1.18" - resolved "https://registry.yarnpkg.com/@libp2p/peer-id/-/peer-id-1.1.18.tgz#f176d7150930d365201b13b97f17c10796afa910" - integrity sha512-Zh3gzbrQZKDMLpoJAJB8gdGtyYFSBKV0dU5vflQ18/7MJDJmjsgKO+sJTYi72yN5sWREs1eGKMhxLo+N1ust5w== - dependencies: - "@libp2p/interface-peer-id" "^1.0.0" - err-code "^3.0.1" - multiformats "^10.0.0" - uint8arrays "^4.0.2" - -"@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0", "@lit-labs/ssr-dom-shim@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz#353ce4a76c83fadec272ea5674ede767650762fd" - integrity sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g== - -"@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": - version "1.6.3" - resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.3.tgz#25b4eece2592132845d303e091bad9b04cdcfe03" - integrity sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ== - dependencies: - "@lit-labs/ssr-dom-shim" "^1.0.0" - -"@lit/reactive-element@^2.0.0", "@lit/reactive-element@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-2.0.4.tgz#8f2ed950a848016383894a26180ff06c56ae001b" - integrity sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ== - dependencies: - "@lit-labs/ssr-dom-shim" "^1.2.0" - -"@lmdb/lmdb-darwin-arm64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz#895d8cb16a9d709ce5fedd8b60022903b875e08e" - integrity sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw== - -"@lmdb/lmdb-darwin-x64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz#ca243534c8b37d5516c557e4624256d18dd63184" - integrity sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug== - -"@lmdb/lmdb-linux-arm64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz#b44a8023057e21512eefb9f6120096843b531c1e" - integrity sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww== - -"@lmdb/lmdb-linux-arm@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz#17bd54740779c3e4324e78e8f747c21416a84b3d" - integrity sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg== - -"@lmdb/lmdb-linux-x64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz#6c61835b6cc58efdf79dbd5e8c72a38300a90302" - integrity sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ== - -"@lmdb/lmdb-win32-x64@2.8.5": - version "2.8.5" - resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz#8233e8762440b0f4632c47a09b1b6f23de8b934c" - integrity sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ== - -"@metamask/detect-provider@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/detect-provider/-/detect-provider-2.0.0.tgz#4bc2795e5e6f7d8b84b2e845058d2f222c99917d" - integrity sha512-sFpN+TX13E9fdBDh9lvQeZdJn4qYoRb/6QF2oZZK/Pn559IhCFacPMU1rMuqyXoFQF3JSJfii2l98B87QDPeCQ== - -"@metamask/eth-json-rpc-provider@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.1.tgz#3fd5316c767847f4ca107518b611b15396a5a32c" - integrity sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA== - dependencies: - "@metamask/json-rpc-engine" "^7.0.0" - "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^5.0.1" - -"@metamask/json-rpc-engine@^7.0.0", "@metamask/json-rpc-engine@^7.3.2": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz#f2b30a2164558014bfcca45db10f5af291d989af" - integrity sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg== - dependencies: - "@metamask/rpc-errors" "^6.2.1" - "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^8.3.0" - -"@metamask/json-rpc-middleware-stream@^6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@metamask/json-rpc-middleware-stream/-/json-rpc-middleware-stream-6.0.2.tgz#75852ce481f8f9f091edbfc04ffdf964f8f3cabd" - integrity sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q== - dependencies: - "@metamask/json-rpc-engine" "^7.3.2" - "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^8.3.0" - readable-stream "^3.6.2" - -"@metamask/object-multiplex@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-2.0.0.tgz#aa6e4aa7b4e2f457ea4bb51cd7281d931e0aa35d" - integrity sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA== - dependencies: - once "^1.4.0" - readable-stream "^3.6.2" - -"@metamask/onboarding@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@metamask/onboarding/-/onboarding-1.0.1.tgz#14a36e1e175e2f69f09598e2008ab6dc1b3297e6" - integrity sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ== - dependencies: - bowser "^2.9.0" - -"@metamask/providers@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@metamask/providers/-/providers-15.0.0.tgz#e8957bb89d2f3379b32b60117d79a141e44db2bc" - integrity sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA== - dependencies: - "@metamask/json-rpc-engine" "^7.3.2" - "@metamask/json-rpc-middleware-stream" "^6.0.2" - "@metamask/object-multiplex" "^2.0.0" - "@metamask/rpc-errors" "^6.2.1" - "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^8.3.0" - detect-browser "^5.2.0" - extension-port-stream "^3.0.0" - fast-deep-equal "^3.1.3" - is-stream "^2.0.0" - readable-stream "^3.6.2" - webextension-polyfill "^0.10.0" - -"@metamask/rpc-errors@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-6.2.1.tgz#f5daf429ededa7cb83069dc621bd5738fe2a1d80" - integrity sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw== - dependencies: - "@metamask/utils" "^8.3.0" - fast-safe-stringify "^2.0.6" - -"@metamask/safe-event-emitter@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" - integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== - -"@metamask/safe-event-emitter@^3.0.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.1.tgz#e89b840a7af8097a8ed4953d8dc8470d1302d3ef" - integrity sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw== - -"@metamask/sdk-communication-layer@0.26.4": - version "0.26.4" - resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.26.4.tgz#dda8e33a327f29962095b82c598799b852e40d81" - integrity sha512-+X4GEc5mV1gWK4moSswVlKsUh+RsA48qPlkxBLTUxQODSnyBe0TRMxE6mH+bSrfponnTzvBkGUXyEjvDwDjDHw== - dependencies: - bufferutil "^4.0.8" - date-fns "^2.29.3" - debug "^4.3.4" - utf-8-validate "^5.0.2" - uuid "^8.3.2" - -"@metamask/sdk-install-modal-web@0.26.4": - version "0.26.4" - resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.26.4.tgz#3e0700988fb148ebc9f48adb327a54498ac899db" - integrity sha512-7Cx7ZsaExbMwghlRrUWWI0Ksg0m7K60LtMjfuDpjvjWqoZa9MoPxitGDEXNbLaqvKn39ebPvNcPzQ6czA4ilTw== - dependencies: - qr-code-styling "^1.6.0-rc.1" - -"@metamask/sdk@0.26.4": - version "0.26.4" - resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.26.4.tgz#4efa48c2def851956110e545c0fe6304a9019684" - integrity sha512-9Yh41KJkD9RhW0lRijnQzPV0ptblLorLdTsf5GnAl3yE72QIfaPBtsDxzLtX+0QLppiFfj7o8vRBYvBApG9k+Q== - dependencies: - "@metamask/onboarding" "^1.0.1" - "@metamask/providers" "^15.0.0" - "@metamask/sdk-communication-layer" "0.26.4" - "@metamask/sdk-install-modal-web" "0.26.4" - "@types/dom-screen-wake-lock" "^1.0.0" - bowser "^2.9.0" - cross-fetch "^4.0.0" - debug "^4.3.4" - eciesjs "^0.3.15" - eth-rpc-errors "^4.0.3" - eventemitter2 "^6.4.7" - i18next "23.11.5" - i18next-browser-languagedetector "7.1.0" - obj-multiplex "^1.0.0" - pump "^3.0.0" - qrcode-terminal-nooctal "^0.12.1" - react-native-webview "^11.26.0" - readable-stream "^3.6.2" - rollup-plugin-visualizer "^5.9.2" - socket.io-client "^4.5.1" - util "^0.12.4" - uuid "^8.3.2" - -"@metamask/utils@^5.0.1": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-5.0.2.tgz#140ba5061d90d9dac0280c19cab101bc18c8857c" - integrity sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g== - dependencies: - "@ethereumjs/tx" "^4.1.2" - "@types/debug" "^4.1.7" - debug "^4.3.4" - semver "^7.3.8" - superstruct "^1.0.3" - -"@metamask/utils@^8.3.0": - version "8.4.0" - resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-8.4.0.tgz#f44812c96467a4e1b70b2edff6ee89a9caa4e354" - integrity sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg== - dependencies: - "@ethereumjs/tx" "^4.2.0" - "@noble/hashes" "^1.3.1" - "@scure/base" "^1.1.3" - "@types/debug" "^4.1.7" - debug "^4.3.4" - pony-cause "^2.1.10" - semver "^7.5.4" - superstruct "^1.0.3" - uuid "^9.0.1" - -"@meteorwallet/sdk@1.0.9": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@meteorwallet/sdk/-/sdk-1.0.9.tgz#d10d41ca81a81673379ba43a9ddf2d23b1b4503a" - integrity sha512-frJM+rwmx18MCVsfHn0O8oaJfB41BqaXW6cyhZ3EtMw3b87DUJyfSuJi9K0HQl7oGG0+wvMZOKRBVVcMiZzoDg== - dependencies: - borsh "^0.7.0" - nanoid "3.3.6" - query-string "^7.1.3" - -"@mintbase-js/wallet@0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@mintbase-js/wallet/-/wallet-0.6.1.tgz#09c4feaa5832a33c8e12623572d0edc0596e02c2" - integrity sha512-qU0Pgf7qN7Bs2G7wtUsOueUs77Yvd2CW2zLZWFHpzVstSI3IkYc0NwmW1u6dqXWYHqPinYMiicHtAq4xHbNgug== - dependencies: - "@near-wallet-selector/core" "8.9.12" - "@near-wallet-selector/wallet-utils" "^8.9.12" - near-api-js "^4.0.3" - -"@mischnic/json-sourcemap@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906" - integrity sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w== - dependencies: - "@lezer/common" "^1.0.0" - "@lezer/lr" "^1.0.0" - json5 "^2.2.1" - -"@motionone/animation@^10.15.1", "@motionone/animation@^10.18.0": - version "10.18.0" - resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.18.0.tgz#868d00b447191816d5d5cf24b1cafa144017922b" - integrity sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw== - dependencies: - "@motionone/easing" "^10.18.0" - "@motionone/types" "^10.17.1" - "@motionone/utils" "^10.18.0" - tslib "^2.3.1" - -"@motionone/dom@^10.16.2", "@motionone/dom@^10.16.4": - version "10.18.0" - resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.18.0.tgz#7fd25dac04cab72def6d2b92b8e0cdc091576527" - integrity sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A== - dependencies: - "@motionone/animation" "^10.18.0" - "@motionone/generators" "^10.18.0" - "@motionone/types" "^10.17.1" - "@motionone/utils" "^10.18.0" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@motionone/easing@^10.18.0": - version "10.18.0" - resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.18.0.tgz#7b82f6010dfee3a1bb0ee83abfbaff6edae0c708" - integrity sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg== - dependencies: - "@motionone/utils" "^10.18.0" - tslib "^2.3.1" - -"@motionone/generators@^10.18.0": - version "10.18.0" - resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.18.0.tgz#fe09ab5cfa0fb9a8884097feb7eb60abeb600762" - integrity sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg== - dependencies: - "@motionone/types" "^10.17.1" - "@motionone/utils" "^10.18.0" - tslib "^2.3.1" - -"@motionone/svelte@^10.16.2": - version "10.16.4" - resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.16.4.tgz#5daf117cf5b2576fc6dd487c5e0500938a742470" - integrity sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA== - dependencies: - "@motionone/dom" "^10.16.4" - tslib "^2.3.1" - -"@motionone/types@^10.15.1", "@motionone/types@^10.17.1": - version "10.17.1" - resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.17.1.tgz#cf487badbbdc9da0c2cb86ffc1e5d11147c6e6fb" - integrity sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A== - -"@motionone/utils@^10.15.1", "@motionone/utils@^10.18.0": - version "10.18.0" - resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.18.0.tgz#a59ff8932ed9009624bca07c56b28ef2bb2f885e" - integrity sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw== - dependencies: - "@motionone/types" "^10.17.1" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@motionone/vue@^10.16.2": - version "10.16.4" - resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.16.4.tgz#07d09e3aa5115ca0bcc0076cb9e5322775277c09" - integrity sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg== - dependencies: - "@motionone/dom" "^10.16.4" - tslib "^2.3.1" - -"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz#9edec61b22c3082018a79f6d1c30289ddf3d9d11" - integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== - -"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855" - integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw== - -"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb" - integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg== - -"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159" - integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw== - -"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3" - integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg== - -"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242" - integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== - -"@multiformats/dns@^1.0.3": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@multiformats/dns/-/dns-1.0.6.tgz#b8c7de11459a02a5f4e609d35d3cdb95cb6ad152" - integrity sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw== - dependencies: - "@types/dns-packet" "^5.6.5" - buffer "^6.0.3" - dns-packet "^5.6.1" - hashlru "^2.3.0" - p-queue "^8.0.1" - progress-events "^1.0.0" - uint8arrays "^5.0.2" - -"@multiformats/multiaddr-to-uri@^9.0.1": - version "9.0.8" - resolved "https://registry.yarnpkg.com/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-9.0.8.tgz#c0b1491b26a4d52273ddc16024c59ba47ef8583f" - integrity sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw== - dependencies: - "@multiformats/multiaddr" "^12.0.0" - -"@multiformats/multiaddr@^11.0.0": - version "11.6.1" - resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-11.6.1.tgz#ec46984a298e715e27a398434c087856db5f3185" - integrity sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw== - dependencies: - "@chainsafe/is-ip" "^2.0.1" - dns-over-http-resolver "^2.1.0" - err-code "^3.0.1" - multiformats "^11.0.0" - uint8arrays "^4.0.2" - varint "^6.0.0" - -"@multiformats/multiaddr@^12.0.0", "@multiformats/multiaddr@^12.1.3", "@multiformats/multiaddr@^12.2.3": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz#b1422813446e5cdec4b0f6cba51f93239f390884" - integrity sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q== - dependencies: - "@chainsafe/is-ip" "^2.0.1" - "@chainsafe/netmask" "^2.0.0" - "@libp2p/interface" "^1.0.0" - "@multiformats/dns" "^1.0.3" - multiformats "^13.0.0" - uint8-varint "^2.0.1" - uint8arrays "^5.0.0" - -"@near-js/accounts@1.2.1", "@near-js/accounts@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@near-js/accounts/-/accounts-1.2.1.tgz#6e5c0315a07997bbaacbe7b9021ac23974a80ea0" - integrity sha512-j6+9n/p0vVLAahmN3YRFve+j0ammOALC9ZUfFhdE3kqtJESbSWMviC5qF/s2m0JQjpJGDtEv/dTADosIJoanWw== - dependencies: - "@near-js/crypto" "1.2.4" - "@near-js/providers" "0.2.2" - "@near-js/signers" "0.1.4" - "@near-js/transactions" "1.2.2" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.2.2" - borsh "1.0.0" - depd "2.0.0" - is-my-json-valid "^2.20.6" - lru_map "0.4.1" - near-abi "0.1.1" - -"@near-js/accounts@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@near-js/accounts/-/accounts-1.2.2.tgz#c0ba5a4644c4438c0f339d842dec8d4d55d35cfb" - integrity sha512-8XInUVl8WwQyitRkG1HffZKhDmAXUwOaxurgkTYocDUUUp+ZB8NPxidg2uvj6f2wqnC8KAkjpm73wPoyRm6+yQ== - dependencies: - "@near-js/crypto" "1.3.0" - "@near-js/providers" "0.2.3" - "@near-js/signers" "0.1.5" - "@near-js/transactions" "1.2.3" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.3.0" - borsh "1.0.0" - depd "2.0.0" - is-my-json-valid "^2.20.6" - lru_map "0.4.1" - near-abi "0.1.1" - -"@near-js/crypto@1.2.4", "@near-js/crypto@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@near-js/crypto/-/crypto-1.2.4.tgz#fad977d6a6d2c0c836ef42db8c8d355c1f433ec0" - integrity sha512-hcSj0ygvTcXlW9ftwEd9dbvQUWBCHNWNDLou9NLfmZERW9dr0gH8kUJPZUWfpJFlUPicb+jTiMpNwDTvP7VW4A== - dependencies: - "@near-js/types" "0.2.1" - "@near-js/utils" "0.2.2" - "@noble/curves" "1.2.0" - borsh "1.0.0" - randombytes "2.1.0" - -"@near-js/crypto@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@near-js/crypto/-/crypto-1.3.0.tgz#ddcfc2a1dc2ad9ac30df5f7ebd36d3408ac379bf" - integrity sha512-BIKO6v+rbYCzzrjsSV4KgClVgRiPluIXQ89B4ozIG8RjjBe/7IPFYF9tIxsXUyLzPFhISzeNQkL09ksHHmnymg== - dependencies: - "@near-js/types" "0.2.1" - "@near-js/utils" "0.3.0" - "@noble/curves" "1.2.0" - borsh "1.0.0" - randombytes "2.1.0" - secp256k1 "5.0.0" - -"@near-js/keystores-browser@0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@near-js/keystores-browser/-/keystores-browser-0.0.12.tgz#2a9794a27d1e55ccb549125b29e183eb967fe52c" - integrity sha512-ptoVfJhMsktYcvY02wD2a8kDDH/E4d+kBfhwKF0H/Qt/w4JVJqEVgCLDBYUespuISTSqLSznNBjTSse+E7pJDQ== - dependencies: - "@near-js/crypto" "1.2.4" - "@near-js/keystores" "0.0.12" - -"@near-js/keystores-browser@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@near-js/keystores-browser/-/keystores-browser-0.1.0.tgz#1cd5e08340067c6156c7d402859b70843afba948" - integrity sha512-v/4uFHKnbEXY4UcOAVCUSb3GKsVdrwv4uXBSPluvE16H9oxjB1+gfcz5qejwKp2cifYNCO0KfAWLnZas66Ohcg== - dependencies: - "@near-js/crypto" "1.3.0" - "@near-js/keystores" "0.1.0" - -"@near-js/keystores-node@0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@near-js/keystores-node/-/keystores-node-0.0.12.tgz#81efaa707faf0cdfc91075920a66be008fbfed8a" - integrity sha512-LUz1HPXBYoZUaLyS/bEj4yZ4pqD9Hb7XURikh22VYL8mbLcR5VmWYwS7Tmi9aO1vW8M9bPnQs5SROAyA79qQgQ== - dependencies: - "@near-js/crypto" "1.2.4" - "@near-js/keystores" "0.0.12" - -"@near-js/keystores-node@0.0.13": - version "0.0.13" - resolved "https://registry.yarnpkg.com/@near-js/keystores-node/-/keystores-node-0.0.13.tgz#408952cbc9e8b5db419c7a6c89ebbf08185abaae" - integrity sha512-cnk2mwIRr7bCPgqz7KHU1Bqxm0u9J+FIubZ0AllFpMVMv8TJVVbs7FcsVIk282oeM7xxikjVJjs35DG6//Fehw== - dependencies: - "@near-js/crypto" "1.3.0" - "@near-js/keystores" "0.1.0" - -"@near-js/keystores@0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@near-js/keystores/-/keystores-0.0.12.tgz#747101d9df8fe55870edd317ab3300a5bd33119d" - integrity sha512-7dqq7XLUSlo26QbaGrS6bmqVL4IfhxJgfIhgKUDfv8FuswrpErBVCAUY6wIbW+mLw0NBoddzPrb5LuLIMfud5Q== - dependencies: - "@near-js/crypto" "1.2.4" - "@near-js/types" "0.2.1" - -"@near-js/keystores@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@near-js/keystores/-/keystores-0.1.0.tgz#3c07fb4d2ec549598bc2db488d05e9fac8df1169" - integrity sha512-89EwYFDvPg7GnJAKmBDASKUSTXny0ZqgqDnSdhp7oJ78bXNlCs9xx0WnkK34TxFBnrL4c9szLjTkfGRcFT07NQ== - dependencies: - "@near-js/crypto" "1.3.0" - "@near-js/types" "0.2.1" - -"@near-js/providers@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@near-js/providers/-/providers-0.2.2.tgz#672f914e97b2de94905e46efe724470ae9ea31a2" - integrity sha512-1V3NhqxfkBvdvq8zhKqbKxsySpIr6PpmlDzkHjDr8uSu6MMvqBgy+1dBvWflEFlN7OlDGx35mVsq/4Xy0wu+KA== - dependencies: - "@near-js/transactions" "1.2.2" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.2.2" - borsh "1.0.0" - http-errors "1.7.2" - optionalDependencies: - node-fetch "2.6.7" - -"@near-js/providers@0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@near-js/providers/-/providers-0.2.3.tgz#e7d77fbdd8d6e024c0cf361b96663767bf4cb0f7" - integrity sha512-JBSze9fdoRXkOsFeLiooPWGm3vemY2dgHT0u0HoJCjpQtt41v7tr+6sWpxGWCaDwrzIwhm7og4qkGv4K9IxFVw== - dependencies: - "@near-js/transactions" "1.2.3" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.3.0" - borsh "1.0.0" - http-errors "1.7.2" - optionalDependencies: - node-fetch "2.6.7" - -"@near-js/signers@0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@near-js/signers/-/signers-0.1.4.tgz#76b8d29fd9577171f546323cc95502bcf80d00ec" - integrity sha512-YgH5X5fDOT/GsEAcyNM3heQWjIIL1MW3P8NtqilMa69HnsvtES9RCwjAXP8d8DZq/dBlI9od+pQ5XhxSFuXKCg== - dependencies: - "@near-js/crypto" "1.2.4" - "@near-js/keystores" "0.0.12" - "@noble/hashes" "1.3.3" - -"@near-js/signers@0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@near-js/signers/-/signers-0.1.5.tgz#4ad10d624f1b13579ce9db95e52a9a8b48251655" - integrity sha512-UldCktmR6HF6N2gPbgiUS8QPYCcDwjyzpdi3ukKezfY2NGA++F068ZwP50S+aQrtcwEBpECTo/Ps6pZq7cSVeQ== - dependencies: - "@near-js/crypto" "1.3.0" - "@near-js/keystores" "0.1.0" - "@noble/hashes" "1.3.3" - -"@near-js/transactions@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@near-js/transactions/-/transactions-1.2.2.tgz#7302f8dd7dc3ea87cd2ebafa0b86bed12232a034" - integrity sha512-WZ/Mk0hFvBIYcD6VBwYw4S2mmiKBKz6PT0YEwNzMzbgPZSs2wRVk4r9Tf+ueCJCPUXo5XINkjThCcRqMHQvPtg== - dependencies: - "@near-js/crypto" "1.2.4" - "@near-js/signers" "0.1.4" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.2.2" - "@noble/hashes" "1.3.3" - borsh "1.0.0" - -"@near-js/transactions@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@near-js/transactions/-/transactions-1.2.3.tgz#c666a475ecfa9cfe3f0d14ad9717f46d0c206f04" - integrity sha512-wwkUupWrmKfdZmv6TmnTrskysX37F2SVHcns6BVwPjp6nFD29NAhul71I6u++8496Lq2FrgM1Kb8pEIpG9TV9w== - dependencies: - "@near-js/crypto" "1.3.0" - "@near-js/signers" "0.1.5" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.3.0" - "@noble/hashes" "1.3.3" - borsh "1.0.0" - -"@near-js/types@0.2.1", "@near-js/types@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@near-js/types/-/types-0.2.1.tgz#a298f0e70dbe059ee8c762dfac05c2eae3e0ae0e" - integrity sha512-YygQEGMdFe6d2e/6dtNZer9paH396XeAdIKEhY/RPXDUnjDdfiDQ5DK4mM130sEeID2bAH9X1LQ+7vXGRjvyWw== - -"@near-js/utils@0.2.2", "@near-js/utils@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@near-js/utils/-/utils-0.2.2.tgz#a42c29db9ccd5a02ad583319028fdb7231821ab2" - integrity sha512-ZAJo/cN6AHY7/gckf8DLHwjAn0z4UwG6rhLxs+QDyNYMMSx9SBg2pOQtBBv7ORWJaPhWD2q7wFhUz4SdTZi43A== - dependencies: - "@near-js/types" "0.2.1" - bs58 "4.0.0" - depd "2.0.0" - mustache "4.0.0" - -"@near-js/utils@0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@near-js/utils/-/utils-0.3.0.tgz#7add9ea4d42c21a55a8346c1146f44b0e7d709fc" - integrity sha512-ExeWqP0b4subLcQuLDIixAZs6tiCWifDBz2OwU9ycntyjZslUUh4EKBaSS3mAEqhJ/t1B9WX80BntE/5PQ+JTg== - dependencies: - "@near-js/types" "0.2.1" - bs58 "4.0.0" - depd "2.0.0" - mustache "4.0.0" - -"@near-js/wallet-account@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@near-js/wallet-account/-/wallet-account-1.2.2.tgz#c04e3e515bd3ca93bafbb761c9770d2fdc078837" - integrity sha512-LaWzqaz2tP1hcToDlmiQnFMGZ1W9dM9i4nFSILe5PLIFLBQmYXdLWc80skGDiTUeihVu6wwtQr6Z2CcG231rWw== - dependencies: - "@near-js/accounts" "1.2.1" - "@near-js/crypto" "1.2.4" - "@near-js/keystores" "0.0.12" - "@near-js/providers" "0.2.2" - "@near-js/signers" "0.1.4" - "@near-js/transactions" "1.2.2" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.2.2" - borsh "1.0.0" - -"@near-js/wallet-account@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@near-js/wallet-account/-/wallet-account-1.2.3.tgz#48f8cdb75964428a6db1126b2484fa10cd29cdcf" - integrity sha512-yuYKKA8D06ztmbTvbajD8HBjP50x2NbMRPInsSSgNjBnvFA9f2J82SarzDLg+nTsayhMJdFGfArnKgIlO+bUaw== - dependencies: - "@near-js/accounts" "1.2.2" - "@near-js/crypto" "1.3.0" - "@near-js/keystores" "0.1.0" - "@near-js/providers" "0.2.3" - "@near-js/signers" "0.1.5" - "@near-js/transactions" "1.2.3" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.3.0" - borsh "1.0.0" - -"@near-snap/sdk@0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@near-snap/sdk/-/sdk-0.6.0.tgz#2c889dcb5c9e08c63363d600db3f66f7c7b40242" - integrity sha512-p2+v9MPUtWmPx6bVa4HOzmazZIoIW5PCVb7mTtk2rRcsktSPSKf1sAci+70+iR6RBKrJGTu+3/F6yXqCo4YcoQ== - dependencies: - "@near-wallet-selector/core" "^8.2.0" - -"@near-wallet-selector/core@8.9.12": - version "8.9.12" - resolved "https://registry.yarnpkg.com/@near-wallet-selector/core/-/core-8.9.12.tgz#6ce355fa70f4102122e812365726f82f884472a9" - integrity sha512-S23/IDi07kCr6JN28jxQZPQOwtp3MwZgMVbtwqZz2BP2N1puAFHIvKpUDrS2l2iZPBImHnU3tdOBvw6Yec7DjQ== - dependencies: - "@near-js/providers" "0.2.2" - borsh "0.7.0" - events "3.3.0" - js-sha256 "0.9.0" - near-api-js "4.0.3" - rxjs "7.8.1" - -"@near-wallet-selector/core@^8.2.0": - version "8.9.10" - resolved "https://registry.yarnpkg.com/@near-wallet-selector/core/-/core-8.9.10.tgz#0e19b22bbe69208c9e82b149682be37f6f9b76c5" - integrity sha512-do+DDahRHPzr5VKiFS7NWKyNbspXu64/w7CuSBi8IUDsDsclmV7Os6Hp5HcVAq+X3Whi//NxKGX6mPMb+SRPqw== - dependencies: - borsh "0.7.0" - events "3.3.0" - js-sha256 "0.9.0" - rxjs "7.8.1" - -"@near-wallet-selector/wallet-utils@^8.9.12": - version "8.9.12" - resolved "https://registry.yarnpkg.com/@near-wallet-selector/wallet-utils/-/wallet-utils-8.9.12.tgz#fd36a2cedf43b7b78da3f9790b09f00d9d30daee" - integrity sha512-3KcZlaaiQ3OyQAqI48Px0dM7Bz3/6gLOgnNepk7BVEygX9h7CuDyVh5Ug3qgObbsDQ59vCLCDey0y0eI4BxkKQ== - dependencies: - "@near-wallet-selector/core" "8.9.12" - near-api-js "4.0.3" - -"@next/env@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/env/-/env-13.3.0.tgz#cc2e49f03060a4684ce7ec7fd617a21bc5b9edba" - integrity sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ== - -"@next/eslint-plugin-next@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.5.tgz#f7e3ff3efe40a2855e5f29bc2692175f85913ba8" - integrity sha512-LY3btOpPh+OTIpviNojDpUdIbHW9j0JBYBjsIp8IxtDFfYFyORvw3yNq6N231FVqQA7n7lwaf7xHbVJlA1ED7g== - dependencies: - glob "10.3.10" - -"@next/swc-darwin-arm64@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.0.tgz#38f18e0639cd4c7edc6a38d4b83fe00f38eea4f2" - integrity sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w== - -"@next/swc-darwin-x64@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.0.tgz#b670ed1fd1d231aa21279173ec52e3ad56dc6aeb" - integrity sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg== - -"@next/swc-linux-arm64-gnu@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.0.tgz#b114935f6b4c94c123f6cac55a4823d483209ba5" - integrity sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw== - -"@next/swc-linux-arm64-musl@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.0.tgz#67a57309f8761c7d00d629d6785d56ed0567a0d2" - integrity sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ== - -"@next/swc-linux-x64-gnu@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.0.tgz#11bd2bea7c00b40be111c0dd16e71171f3792086" - integrity sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA== - -"@next/swc-linux-x64-musl@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.0.tgz#d57e99f85890799b78719c3ea32a4624de8d701b" - integrity sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw== - -"@next/swc-win32-arm64-msvc@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.0.tgz#0c209aa35d1c88b01e78259a89cd68f4139b5093" - integrity sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA== - -"@next/swc-win32-ia32-msvc@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.0.tgz#52ae74da1dd6d840c3743923367d27ed013803dd" - integrity sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w== - -"@next/swc-win32-x64-msvc@13.3.0": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.0.tgz#db7b55fee834dc8c2c484c696469e65bae2ee770" - integrity sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ== - -"@ngtools/webpack@16.1.8": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-16.1.8.tgz#61e12e4a70101333c9689755c8d47673ca987bfc" - integrity sha512-co2SC1a822655Ek2f6fkMFsswHeCm2obNceb0kftLSpqomCgPAC3T447pB3TE1Iw+BEMFdjrAgIrp3nyYWwHsQ== - -"@noble/ciphers@0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.5.3.tgz#48b536311587125e0d0c1535f73ec8375cd76b23" - integrity sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w== - -"@noble/curves@1.2.0", "@noble/curves@~1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" - integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== - dependencies: - "@noble/hashes" "1.3.2" - -"@noble/curves@1.3.0", "@noble/curves@~1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" - integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== - dependencies: - "@noble/hashes" "1.3.3" - -"@noble/hashes@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" - integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== - -"@noble/hashes@1.3.3", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.2": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" - integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== - -"@noble/hashes@1.4.0", "@noble/hashes@^1.3.1": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" - integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== - -"@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" - -"@npmcli/arborist@^5.6.3": - version "5.6.3" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-5.6.3.tgz#40810080272e097b4a7a4f56108f4a31638a9874" - integrity sha512-/7hbqEM6YuRjwTcQXkK1+xKslEblY5kFQe0tZ7jKyMlIR6x4iOmhLErIkBBGtTKvYxRKdpcxnFXjCobg3UqmsA== - dependencies: - "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/map-workspaces" "^2.0.3" - "@npmcli/metavuln-calculator" "^3.0.1" - "@npmcli/move-file" "^2.0.0" - "@npmcli/name-from-folder" "^1.0.1" - "@npmcli/node-gyp" "^2.0.0" - "@npmcli/package-json" "^2.0.0" - "@npmcli/query" "^1.2.0" - "@npmcli/run-script" "^4.1.3" - bin-links "^3.0.3" - cacache "^16.1.3" - common-ancestor-path "^1.0.1" - hosted-git-info "^5.2.1" - json-parse-even-better-errors "^2.3.1" - json-stringify-nice "^1.1.4" - minimatch "^5.1.0" - mkdirp "^1.0.4" - mkdirp-infer-owner "^2.0.0" - nopt "^6.0.0" - npm-install-checks "^5.0.0" - npm-package-arg "^9.0.0" - npm-pick-manifest "^7.0.2" - npm-registry-fetch "^13.0.0" - npmlog "^6.0.2" - pacote "^13.6.1" - parse-conflict-json "^2.0.1" - proc-log "^2.0.0" - promise-all-reject-late "^1.0.0" - promise-call-limit "^1.0.1" - read-package-json-fast "^2.0.2" - readdir-scoped-modules "^1.1.0" - rimraf "^3.0.2" - semver "^7.3.7" - ssri "^9.0.0" - treeverse "^2.0.0" - walk-up-path "^1.0.0" - -"@npmcli/ci-detect@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-2.0.0.tgz#e63c91bcd4185ac1e85720a34fc48e164ece5b89" - integrity sha512-8yQtQ9ArHh/TzdUDKQwEvwCgpDuhSWTDAbiKMl3854PcT+Dk4UmWaiawuFTLy9n5twzXOBXVflWe+90/ffXQrA== - -"@npmcli/config@^4.2.1": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-4.2.2.tgz#2e3334dda84f48d059309c53d152e66b05ca24b7" - integrity sha512-5GNcLd+0c4bYBnFop53+26CO5GQP0R9YcxlernohpHDWdIgzUg9I0+GEMk3sNHnLntATVU39d283A4OO+W402w== - dependencies: - "@npmcli/map-workspaces" "^2.0.2" - ini "^3.0.0" - mkdirp-infer-owner "^2.0.0" - nopt "^6.0.0" - proc-log "^2.0.0" - read-package-json-fast "^2.0.3" - semver "^7.3.5" - walk-up-path "^1.0.0" - -"@npmcli/disparity-colors@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/disparity-colors/-/disparity-colors-2.0.0.tgz#cb518166ee21573b96241a3613fef70acb2a60ba" - integrity sha512-FFXGrIjhvd2qSZ8iS0yDvbI7nbjdyT2VNO7wotosjYZM2p2r8PN3B7Om3M5NO9KqW/OVzfzLB3L0V5Vo5QXC7A== - dependencies: - ansi-styles "^4.3.0" - -"@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== - dependencies: - "@gar/promisify" "^1.0.1" - semver "^7.3.5" - -"@npmcli/fs@^2.1.0", "@npmcli/fs@^2.1.1": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== - dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" - -"@npmcli/fs@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" - integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== - dependencies: - semver "^7.3.5" - -"@npmcli/git@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" - integrity sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w== - dependencies: - "@npmcli/promise-spawn" "^3.0.0" - lru-cache "^7.4.4" - mkdirp "^1.0.4" - npm-pick-manifest "^7.0.0" - proc-log "^2.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^2.0.2" - -"@npmcli/git@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-4.1.0.tgz#ab0ad3fd82bc4d8c1351b6c62f0fa56e8fe6afa6" - integrity sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ== - dependencies: - "@npmcli/promise-spawn" "^6.0.0" - lru-cache "^7.4.4" - npm-pick-manifest "^8.0.0" - proc-log "^3.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^3.0.0" - -"@npmcli/installed-package-contents@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== - dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -"@npmcli/installed-package-contents@^2.0.1": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" - integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== - dependencies: - npm-bundled "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -"@npmcli/map-workspaces@^2.0.2", "@npmcli/map-workspaces@^2.0.3": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz#9e5e8ab655215a262aefabf139782b894e0504fc" - integrity sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg== - dependencies: - "@npmcli/name-from-folder" "^1.0.1" - glob "^8.0.1" - minimatch "^5.0.1" - read-package-json-fast "^2.0.3" - -"@npmcli/metavuln-calculator@^3.0.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz#9359bd72b400f8353f6a28a25c8457b562602622" - integrity sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA== - dependencies: - cacache "^16.0.0" - json-parse-even-better-errors "^2.3.1" - pacote "^13.0.3" - semver "^7.3.5" - -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/move-file@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" - integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/name-from-folder@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" - integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== - -"@npmcli/node-gyp@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" - integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== - -"@npmcli/node-gyp@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" - integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== - -"@npmcli/package-json@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-2.0.0.tgz#3bbcf4677e21055adbe673d9f08c9f9cde942e4a" - integrity sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA== - dependencies: - json-parse-even-better-errors "^2.3.1" - -"@npmcli/promise-spawn@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" - integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== - dependencies: - infer-owner "^1.0.4" - -"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" - integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== - dependencies: - which "^3.0.0" - -"@npmcli/query@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-1.2.0.tgz#46468d583cf013aa92102970700f9555314aabe4" - integrity sha512-uWglsUM3PjBLgTSmZ3/vygeGdvWEIZ3wTUnzGFbprC/RtvQSaT+GAXu1DXmSFj2bD3oOZdcRm1xdzsV2z1YWdw== - dependencies: - npm-package-arg "^9.1.0" - postcss-selector-parser "^6.0.10" - semver "^7.3.7" - -"@npmcli/run-script@^4.1.0", "@npmcli/run-script@^4.1.3", "@npmcli/run-script@^4.2.0", "@npmcli/run-script@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.2.1.tgz#c07c5c71bc1c70a5f2a06b0d4da976641609b946" - integrity sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg== - dependencies: - "@npmcli/node-gyp" "^2.0.0" - "@npmcli/promise-spawn" "^3.0.0" - node-gyp "^9.0.0" - read-package-json-fast "^2.0.3" - which "^2.0.2" - -"@npmcli/run-script@^6.0.0": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" - integrity sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/promise-spawn" "^6.0.0" - node-gyp "^9.0.0" - read-package-json-fast "^3.0.0" - which "^3.0.0" - -"@nrwl/angular@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-16.4.0.tgz#0dd09df96818138a031bd5c0bde3937914f9c4d5" - integrity sha512-PaQGjyavkT6lBhvj2etuyVocLtH8DF2b50uMHsBYJCI6fIIGmeTxGIzeNoJB03ybfk5DWTL5J5h0axls3HLS0Q== - dependencies: - "@nx/angular" "16.4.0" - tslib "^2.3.0" - -"@nrwl/cypress@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-16.0.0.tgz#f862ce2ce2d923fa124216f531abc97a79b669a7" - integrity sha512-FtDUsxlCkcDN9xUjmku9F8aiVNDZoTi7KZsbDFETK8h+eyuR2/cbGgZQtBSkzT59zdla34zi8WXQ7pHRsoVwVA== - dependencies: - "@nx/cypress" "16.0.0" - -"@nrwl/cypress@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-16.4.0.tgz#0f13c7e79a55f70e33e9af8553256a20a7c617d4" - integrity sha512-3xkbwfFF8RUKcXY39Mj7Eu8QIqkW3i+tDTibMLltNaOTqS58FPRU0j/VbwWJEsKjDF0HSCqH+t0ApjZD3fHmdw== - dependencies: - "@nx/cypress" "16.4.0" - -"@nrwl/devkit@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.0.0.tgz#b816891053e5efa3e2b51f3dfa285e8c9b78bb93" - integrity sha512-ycd4wD4v1N/ywjU1cwTVCPQJwxnGjEsWIll5z5cMtfHwJf+0OhMTqC3zeZibIwnjjoh721pyEzXODyUmjkGmVw== - dependencies: - "@nx/devkit" "16.0.0" - -"@nrwl/devkit@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.4.0.tgz#0bd16834e09d1b01fadf5c68fd19410893e61ac8" - integrity sha512-KUu9oNrMB8DP78BAO8XWJC5HOSS6dO6ocMWj2DtuNVgMgABviy+ih/TmrGKxQQBH0Ib4cxTeMIQVRdAak5c1UA== - dependencies: - "@nx/devkit" "16.4.0" - -"@nrwl/eslint-plugin-nx@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-16.0.0.tgz#efc9ab2c98e8772aa8fa7d78a4a7d0d57d253cf9" - integrity sha512-HJLMP6/g00huvsr7ik4NStvXB/MWDkWo45nKtvuZIvmycYt4VUATzQt2CrUaKKqRM5eAW7Ho8aW63DOIsufOcg== - dependencies: - "@nx/eslint-plugin" "16.0.0" - -"@nrwl/jest@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-16.0.0.tgz#05e086da8cd54a1f94334486cb2a2bb4289f849e" - integrity sha512-3EOp1Sa9ZSKuqJIC9zYzwBuitvmXC9nn0BVCqv6NgfdXRzQgA7+RFObE+Zym/nejF0ZMGIvZnXZFMT/z6Cbczw== - dependencies: - "@nx/jest" "16.0.0" - -"@nrwl/jest@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-16.4.0.tgz#c3bbbc6261f9f270ec5aa7d6646fa34ce4b9b82d" - integrity sha512-/UlZNC/e80p0X5fKkc5yeaG8b4sYwQLtUsjy+ZZF403cx2gwWLbcGTXmuPbkR4377j8nyKdyFwNXqYureGwg3Q== - dependencies: - "@nx/jest" "16.4.0" - -"@nrwl/js@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-16.0.0.tgz#2a35ec659709719fa9d6e0e948bc0997e8ee0404" - integrity sha512-RedHAlmQpbGIWdFOl0bbl4BND1OlZjEumQG0nNIg0pgDhPgJtfovP1UKBJErUJ/mNhINKh7VCmxPhYM9RARtWQ== - dependencies: - "@nx/js" "16.0.0" - -"@nrwl/js@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-16.4.0.tgz#6fc3bfec273a7a016ebff864cd28c3e5ffeb6249" - integrity sha512-8q7uOoPWVDKxTb4Vveo2aS1ULRhE+NTQfcXRsDUINKUaIHN60dkinpcuBJHQqKdeXgi/5kIM4ht9vJ7ctQ0tCw== - dependencies: - "@nx/js" "16.4.0" - -"@nrwl/linter@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-16.0.0.tgz#dd530c6aac9677712d1444a6e529c0b6b2a525e3" - integrity sha512-TPRRtmNZWVF/OaZMWWk4dB/f2MAmfw+Kyih7GVohOgut0qS4DB1HkFAWhGgEDOVFD0hRfj3vVayDkfEeONqJJg== - dependencies: - "@nx/linter" "16.0.0" - -"@nrwl/linter@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-16.4.0.tgz#2ee42d24a4cc287e0b1d338499aa15ccb86ef0a9" - integrity sha512-Difx1XkTmeTRg+EhU5JCAMeL3gZotVFvhUvQ6Vevmk6Xuj5Pp5LAGAxTj3P2O3A60UTb28ANPtjqD/DztJDTfA== - dependencies: - "@nx/linter" "16.4.0" - -"@nrwl/next@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/next/-/next-16.0.0.tgz#887db3a2c99758a857278a77b5e2b9a804e3ab96" - integrity sha512-u8bue0y6TNUQ0D01t5asgk++WyW+g3ITqMV/YelK0YvmaZywHiwolQAhcGIRzqlxmt7Ow9PFDrXyX5aRkh2BZQ== - dependencies: - "@nx/next" "16.0.0" - -"@nrwl/nx-cloud@16.0.5": - version "16.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-16.0.5.tgz#c963480a71c4afa964fbbe9e4d6bbf222764e9cd" - integrity sha512-1p82ym8WE9ziejwgPslstn19iV/VkHfHfKr/5YOnfCHQS+NxUf92ogcYhHXtqWLblVZ9Zs4W4pkSXK4e04wCmQ== - dependencies: - nx-cloud "16.0.5" - -"@nrwl/react@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/react/-/react-16.0.0.tgz#6ae793f421929f800b3cc1183b4f1ddfeabb265b" - integrity sha512-rBT260IgYzGarGitF4RukF15Ob9Wqz++aeSO/1X8MFXexoRN/xlABXN29kr9eSPcj0Diy3F0TMX/vEdp320eBA== - dependencies: - "@nx/react" "16.0.0" - -"@nrwl/rollup@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/rollup/-/rollup-16.0.0.tgz#895c06f1a3d01bb70835316b142035f1c1bee5d7" - integrity sha512-N15Wq0DDYooyLMBv0j4JXZxCE9nHpb8kXVslaDOndpRs6ngAvTRVrGSDpvGTwnOMHzOue3PrEHZ06cupAvSZug== - dependencies: - "@nx/rollup" "16.0.0" - -"@nrwl/tao@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.0.0.tgz#976d8a1886c08bb9525c5260f210882c9f130671" - integrity sha512-0A+e6jGmBBhpcaSlFr24uNvMRNZmlAWETj8K7gvYYjbWpVx3VP5hY+9R9vOxRwozWEHeEDFl1xue8ci0HWzORA== - dependencies: - nx "16.0.0" - -"@nrwl/tao@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.4.0.tgz#81a844c8c707ff747b26ea7d23f6bed005b72967" - integrity sha512-6n4chOOv6jqact07NvIDRQfsnaiYYhi+mrqSuJKs6fL+c5kx/VCryndTP0MDTBbazfL6H7vwiQUkTja2sQDuwA== - dependencies: - nx "16.4.0" - -"@nrwl/web@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-16.0.0.tgz#98e6aca8e336243c2369a4afd316ec120cf4a899" - integrity sha512-oFucYamUhgtESLh0oqeiFpHRXs2gJWDmFULH4zYMgO2Xfg8ekWdD/jYTZ5bih2FX1LhnHBYtc7jdkmu5Zw9jpQ== - dependencies: - "@nx/web" "16.0.0" - -"@nrwl/webpack@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/webpack/-/webpack-16.0.0.tgz#3e8ed81c43ef8258df22ec4057d977451e22a943" - integrity sha512-xecs4ylS3lYEE0k38ZRwEEwAm/s+jYisBGjo6bIOb6LEIZHkcrxvZeK3GJMTfAPDs08X1ei/XUo9IyUPh19McA== - dependencies: - "@nx/webpack" "16.0.0" - -"@nrwl/webpack@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nrwl/webpack/-/webpack-16.4.0.tgz#243d90ffdc53f1eff21b11f4180636b4e501162e" - integrity sha512-Y/55xACx/SZb544+hnCptH7UaK8ApggMkwjvc/4z+FYw7QmKwa2Yu2o6LEqSXZ3P+erRLInfj0CnFPiI5QjwLg== - dependencies: - "@nx/webpack" "16.4.0" - -"@nrwl/workspace@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-16.0.0.tgz#375063f905157af6e9af39c12ea4b018e7a99533" - integrity sha512-cZOiSYXQP69tgTtHOxuoT9PUY7lZ1DWbB40MRpGqZN1Xk8efr9jG23LrHSN5Fr9ShfMdXkKqK7NQT8HijXu/UA== - dependencies: - "@nx/workspace" "16.0.0" - -"@nrwl/workspace@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-16.4.0.tgz#804323380bff63fb53d1964321227d7c5155286f" - integrity sha512-iu2GgzoEQYn7IzJe2m69YqftajFJpce5jcE5d6OV2Idgq228Lb0j7aCw4W4fK7bsCeqZGhVGpiBjE+Cyw1GxGw== - dependencies: - "@nx/workspace" "16.4.0" - -"@nx/angular@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/angular/-/angular-16.4.0.tgz#269f8d96838a660ad7d9b8875edffdc7a2af14e2" - integrity sha512-ovlkafPNr/TLgQvD7wvCm+X1U6lVlE8jwRNnJhEol4q0gFGaa6J4CtNSuCAd9IqWbCQir+raKtlhxr/TL7eviw== - dependencies: - "@nrwl/angular" "16.4.0" - "@nx/cypress" "16.4.0" - "@nx/devkit" "16.4.0" - "@nx/jest" "16.4.0" - "@nx/js" "16.4.0" - "@nx/linter" "16.4.0" - "@nx/webpack" "16.4.0" - "@nx/workspace" "16.4.0" - "@phenomnomnominal/tsquery" "~5.0.1" - "@typescript-eslint/type-utils" "^5.36.1" - chalk "^4.1.0" - chokidar "^3.5.1" - enquirer "^2.3.6" - http-server "^14.1.0" - ignore "^5.0.4" - magic-string "~0.26.2" - minimatch "3.0.5" - semver "7.5.3" - ts-node "10.9.1" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - webpack "^5.80.0" - webpack-merge "5.7.3" - -"@nx/cypress@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/cypress/-/cypress-16.0.0.tgz#87fafdce961a5aef31143a0bbb7f905be6faa3a7" - integrity sha512-L6dzZkDBypzJpk1KJHGEqnKAG0qyh3EJxVc9OdrQ6Tcq1ndMTWStkkxaA/IodgTZUBzlZcuDei4jrQOnL76QoQ== - dependencies: - "@nrwl/cypress" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/js" "16.0.0" - "@nx/linter" "16.0.0" - "@phenomnomnominal/tsquery" "~5.0.1" - detect-port "^1.5.1" - dotenv "~10.0.0" - semver "7.3.4" - -"@nx/cypress@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/cypress/-/cypress-16.4.0.tgz#4ee6273ebe4c390b8392f6f8a778fcfd3f2e9dab" - integrity sha512-B0IouuC22atN+qucr8AVbyJZ0OgGkrHTLqoF6E6NNQOX5fHkcEGLwsFfRkkCa+QV/HuB+Vs9BQRQyqpb+G3Ogw== - dependencies: - "@nrwl/cypress" "16.4.0" - "@nx/devkit" "16.4.0" - "@nx/js" "16.4.0" - "@nx/linter" "16.4.0" - "@phenomnomnominal/tsquery" "~5.0.1" - detect-port "^1.5.1" - dotenv "~10.0.0" - semver "7.5.3" - -"@nx/devkit@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.0.0.tgz#ef06e0b713d542defe9c5e0021b4bbab559dd963" - integrity sha512-ooIaAcheEUJ0pRdLv91btVssGL7TLOcvW8EF0yKYAdCNv3HRHtZX7Ompc6NPMauLuHYmp4eeRly3wADa7xBzAg== - dependencies: - "@nrwl/devkit" "16.0.0" - ejs "^3.1.7" - ignore "^5.0.4" - semver "7.3.4" - tmp "~0.2.1" - tslib "^2.3.0" - -"@nx/devkit@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.4.0.tgz#e8e5d6c6e4f6964387d418a4b48588528a021517" - integrity sha512-/Y+tC2IBxVEf3EKB80G9mF27ZBAFEBBmDMn1MPzfGX9AB2GGNCqgvSkSHT5DlkyxJOMqbE7DpMyHxubALyenEA== - dependencies: - "@nrwl/devkit" "16.4.0" - ejs "^3.1.7" - ignore "^5.0.4" - semver "7.5.3" - tmp "~0.2.1" - tslib "^2.3.0" - -"@nx/eslint-plugin@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/eslint-plugin/-/eslint-plugin-16.0.0.tgz#7c5149cc5060cfe73a00d02a76237ceef99a7bfc" - integrity sha512-vBleTWAneUOAmmwZdJb2TisKi7A3fBuiWcdW7vpxgLF2dh8oMBB54AMjXKdibwMOIKTVLtECDNR84b2kkYElyA== - dependencies: - "@nrwl/eslint-plugin-nx" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/js" "16.0.0" - "@typescript-eslint/utils" "^5.58.0" - chalk "^4.1.0" - confusing-browser-globals "^1.0.9" - semver "7.3.4" - -"@nx/jest@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-16.0.0.tgz#f82c272d1718e38a487bbb0e0ba14c6fe525a658" - integrity sha512-WbZ+msoi69kUkMR73nr+aLLTZnHy+XjkaBYCzu/9xdGF99ZYReBy2peHHxWVJSmZ8u7HgYZHuv4h3vEQuEiFdw== - dependencies: - "@jest/reporters" "^29.4.1" - "@jest/test-result" "^29.4.1" - "@nrwl/jest" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/js" "16.0.0" - "@phenomnomnominal/tsquery" "~5.0.1" - chalk "^4.1.0" - dotenv "~10.0.0" - identity-obj-proxy "3.0.0" - jest-config "^29.4.1" - jest-resolve "^29.4.1" - jest-util "^29.4.1" - resolve.exports "1.1.0" - tslib "^2.3.0" - -"@nx/jest@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-16.4.0.tgz#a47926f74e10ecfc120b0743804e68c3360c0689" - integrity sha512-ns2l3ww1ppGRVw5ngW6GWzTeouDqtfzO2ZjixZ8mq46IDHrMeuBrS1W5L6C1gWtKo3HDdlnaWcDj6RZtUw5UPA== - dependencies: - "@jest/reporters" "^29.4.1" - "@jest/test-result" "^29.4.1" - "@nrwl/jest" "16.4.0" - "@nx/devkit" "16.4.0" - "@nx/js" "16.4.0" - "@phenomnomnominal/tsquery" "~5.0.1" - chalk "^4.1.0" - dotenv "~10.0.0" - identity-obj-proxy "3.0.0" - jest-config "^29.4.1" - jest-resolve "^29.4.1" - jest-util "^29.4.1" - resolve.exports "1.1.0" - tslib "^2.3.0" - -"@nx/js@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/js/-/js-16.0.0.tgz#8c9bbd01152ce0df46a1f15157d1c5e41ebb56fa" - integrity sha512-/GDbJhwnFzz24WOFmN95y0RD/iZTUWdrrrux9rUV/hsDvET5QJKx+Kw7nDUPqFnvojf/D9N5jB3uQAZFx2zLtQ== - dependencies: - "@babel/core" "^7.15.0" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-decorators" "^7.14.5" - "@babel/plugin-transform-runtime" "^7.15.0" - "@babel/preset-env" "^7.15.0" - "@babel/preset-typescript" "^7.15.0" - "@babel/runtime" "^7.14.8" - "@nrwl/js" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/workspace" "16.0.0" - "@phenomnomnominal/tsquery" "~5.0.1" - babel-plugin-const-enum "^1.0.1" - babel-plugin-macros "^2.8.0" - babel-plugin-transform-typescript-metadata "^0.3.1" - chalk "^4.1.0" - fast-glob "3.2.7" - fs-extra "^11.1.0" - ignore "^5.0.4" - js-tokens "^4.0.0" - minimatch "3.0.5" - source-map-support "0.5.19" - tree-kill "1.2.2" - tslib "^2.3.0" - -"@nx/js@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/js/-/js-16.4.0.tgz#bc3f075a05d58a1533f8fc2daf48265d9d4ef219" - integrity sha512-yIxVv4B2DF4XFgkZ1UvUiXtk9o62wTRc0MzScgnoeqir/J9do+YR9pCIDVQEThBOROKdIFjlhQ/CEz5JhiRLEQ== - dependencies: - "@babel/core" "^7.15.0" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-decorators" "^7.14.5" - "@babel/plugin-transform-runtime" "^7.15.0" - "@babel/preset-env" "^7.15.0" - "@babel/preset-typescript" "^7.15.0" - "@babel/runtime" "^7.14.8" - "@nrwl/js" "16.4.0" - "@nx/devkit" "16.4.0" - "@nx/workspace" "16.4.0" - "@phenomnomnominal/tsquery" "~5.0.1" - babel-plugin-const-enum "^1.0.1" - babel-plugin-macros "^2.8.0" - babel-plugin-transform-typescript-metadata "^0.3.1" - chalk "^4.1.0" - detect-port "^1.5.1" - fast-glob "3.2.7" - fs-extra "^11.1.0" - ignore "^5.0.4" - js-tokens "^4.0.0" - minimatch "3.0.5" - semver "7.5.3" - source-map-support "0.5.19" - tslib "^2.3.0" - -"@nx/linter@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-16.0.0.tgz#d2028d0b7ff9c5486aaca5a2950cf685ad4dffd6" - integrity sha512-814Si3lmETTWk4mMWRFEjPuKH9mdOq0jnb8+v9YXMkVhxYU7Zt7DasvLnguy5j8rDIWw5jPakcgaS48WK+Ro1A== - dependencies: - "@nrwl/linter" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/js" "16.0.0" - "@phenomnomnominal/tsquery" "~5.0.1" - tmp "~0.2.1" - tslib "^2.3.0" - -"@nx/linter@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-16.4.0.tgz#6fdd8772e753e01695b3c4a0d28b823bcadabe1c" - integrity sha512-YFfHQMHWUBfGr6jAKXhqTH25Qnq86+h1hgrGxEwB+5n0YndDGhwlBFqoE368tVGJ1YDtXnK+kSegEu7HB2h9OQ== - dependencies: - "@nrwl/linter" "16.4.0" - "@nx/devkit" "16.4.0" - "@nx/js" "16.4.0" - "@phenomnomnominal/tsquery" "~5.0.1" - tmp "~0.2.1" - tslib "^2.3.0" - -"@nx/next@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/next/-/next-16.0.0.tgz#f3e016367abbe40d8e38dcc021368029d76fe672" - integrity sha512-DBSkMDpzu0xXpFjLd6NpfdzrlNb78eSGLQ1okiF3Xu1K41TZGQ2ShW4Ac85PKI10TgW2B5mjG8yT0HGaxBUYRQ== - dependencies: - "@babel/plugin-proposal-decorators" "^7.14.5" - "@nrwl/next" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/js" "16.0.0" - "@nx/linter" "16.0.0" - "@nx/react" "16.0.0" - "@nx/workspace" "16.0.0" - "@svgr/webpack" "^6.1.2" - chalk "^4.1.0" - copy-webpack-plugin "^10.2.4" - dotenv "~10.0.0" - express "^4.18.1" - fs-extra "^11.1.0" - http-proxy-middleware "^2.0.6" - ignore "^5.0.4" - semver "7.3.4" - ts-node "10.9.1" - tsconfig-paths "^4.1.2" - tsconfig-paths-webpack-plugin "4.0.0" - url-loader "^4.1.1" - webpack-merge "^5.8.0" - -"@nx/nx-darwin-arm64@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.0.0.tgz#416ee4ea4b965ec5b0493a093aa4883bd0cb75a8" - integrity sha512-GtXS0NPENG+s5bsVdsaXTX1jKOw85jHSALhrXXiMXknjwnvyHUelxFDS4fHhIlcOSd56Y5sn1pdg/fi2WPoscw== - -"@nx/nx-darwin-arm64@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.4.0.tgz#72d5cbeb585aa05b4035f1de8f92ba562b180137" - integrity sha512-/ZXuF8M3u8DSNmjYstQKorzo7uIETNhnFinwWlO8mzz+SyR+Xs5G6penJ4+cB1ju3Hf3lZkXd5U6pEiW4OAAkA== - -"@nx/nx-darwin-x64@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.0.0.tgz#e318720de156e78de5ee2f9cb168ee69a814a277" - integrity sha512-iZv59vEoHekLahBrENYFtyUxuMwIQG24weluc00N2Edp7AlxVf7wRw6gd/xp3ATQbx/N92UPg6X761uBp2gm+Q== - -"@nx/nx-darwin-x64@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.4.0.tgz#24f8b9946c77ec1d66e42ffe2f84623e4072167c" - integrity sha512-0Fo58qZzHgRs4SRVaAOBipdJQNew57YQbpFaLHKhCTyKc0Pe6THEYaaT/x9QVkcFO0x4AzNr9T7iJTrneNwcKg== - -"@nx/nx-freebsd-x64@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.4.0.tgz#a82954fe4bc6a74cd6b7e0cb89e1486ac4c06e27" - integrity sha512-Qoes/NifE4zb5Gb6ZdC32HvxZBzO0xo74j7EozUV5rZEm3bCtKbKqThPV9Uuu+8S4j718r5vlob/IMXqRcWK4g== - -"@nx/nx-linux-arm-gnueabihf@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.0.0.tgz#9a4a7eb793a7d60cdf62b8adac7e9db35b0b08d1" - integrity sha512-o+ds8HogpkIc+Q8j5KEdiuEvGo6iHSpKSaFxKPIKHgD7xa6Kll966hKiFigeY2FDT2nGQlKZ0n1wNWQ4x2rijw== - -"@nx/nx-linux-arm-gnueabihf@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.4.0.tgz#77911992e38c1aee51d4a075545ea2828d074c45" - integrity sha512-m8uklbettj8RnLtasjQPiYxqJotDSfO3LO1II8Bds53C7OT8TDnTkW68MEx+CxuSCQFy2Aa0Oih3jSvDzfnZzA== - -"@nx/nx-linux-arm64-gnu@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.0.0.tgz#5810f16a90bdc6d0c0f5a34326c1625309af1b5c" - integrity sha512-ue2ravlNusu5xojC37JjgLaUyqm0swL5egVSHBARxOsT7piyk0ac56/j+ZrBckrjLbIplTGpwFGGS9vbKiEeoQ== - -"@nx/nx-linux-arm64-gnu@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.4.0.tgz#ee2b7208083cf3fc63121ee079ab3e0c2bbe5fa4" - integrity sha512-bAs2T/zZQDTCzzhciE8kCrkwgXbeX3K83cGRacB7PDZZl/O4jr5TRO4zYHi6doytyLONjqhvWNLbIo4cEEcfZA== - -"@nx/nx-linux-arm64-musl@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.0.0.tgz#6f1697ef43c12fc4a71a8351f8a84a955e8d70c9" - integrity sha512-dSqC3Tp8GfWqOH/jZBkdGtoDoi/A5+LA45nqXRAMawyFv3jODcBsPPuCT8FHk0Yb7X8+MNYx7gk7H14aRIjlQg== - -"@nx/nx-linux-arm64-musl@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.4.0.tgz#afaf514d3df0bc31c4a6545d254502c661e3d347" - integrity sha512-K1D8j4lRZDBVuW8iomeJjCznFz7rfP3qaB3RHjKZU5qrZBq1uYohhdfT7dzwWFNWEvt6WytfhGCl2S9PsQ37Wg== - -"@nx/nx-linux-x64-gnu@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.0.0.tgz#3e2c8d3c395631968892b9f11073fbf469aeb814" - integrity sha512-xk35VXMp6LfopYFSHy4aEgn1xhFyxDl0xYVcg0nrp0ohppjkYIW2H/XVuuEdYZvRuTPkn3a6dQDoo0LLeY77Cg== - -"@nx/nx-linux-x64-gnu@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.4.0.tgz#fba4991ac27f0c342157445259485c06fca686f2" - integrity sha512-v1NJ3ESaw5bdSeuh5Xslq1dXGWztf0mSLwZP510Rt9+ulr5LQ/X1Rri8zefU0gZNLcmJL0G2Qq7UTnppYGRTEg== - -"@nx/nx-linux-x64-musl@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.0.0.tgz#5be22f0f79b0ab7291e8bace97a5ad99c0de4bc9" - integrity sha512-yIdIlggK3WyDGoB7zS2UaiX2Q7ew0De62cNDudHgdg8dzHxa6IzKeFJjVEoNEt5Z+BG8ILaSn/lYxQs8YtV4FA== - -"@nx/nx-linux-x64-musl@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.4.0.tgz#9bbdb590a49de9667e2e26dc173fe6d303e165be" - integrity sha512-+8YLVWZFq+k6YJ2ZDwR5sGaRnZhUVYtR8aPbGyonMnJ8VEQJNEqsm1KT6nt0gd3JJdxyphm3VsMQWBMo42jM+w== - -"@nx/nx-win32-arm64-msvc@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.0.0.tgz#74d4c2a27ca029310b38fe0bbdf0f26e6e30f159" - integrity sha512-YgnkVewQgA/RhXcGDbyhIi+WqAdIzjKGF1JPsA8q+6di3hRksvN+Ud4TVM9R8NFCrRclIxt04v+fqM24PmMIUQ== - -"@nx/nx-win32-arm64-msvc@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.4.0.tgz#a2e06890c70afdd339d0d95516ae8bbc222d9ce6" - integrity sha512-HwE6AxlrfWvODT49vVX6NGMYc3zdMVXETCdZb0jZ/oz28XXTAPvVb/8DJgKSyCs0DPirEeCHiPwbdcJA1Bqw8A== - -"@nx/nx-win32-x64-msvc@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.0.0.tgz#29df5b0f34f47468958d404c3666714ed061cc8b" - integrity sha512-6UXuO3v5rD3ae5jyYZ0cvlLMJ1NzmdLIIQHio/sWno3KJ0+NR/gpkQBl6F4CdZmoXTXZ+ZsDGUNzQtXWkCdSLg== - -"@nx/nx-win32-x64-msvc@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.4.0.tgz#d98b4087b696b524461fc142f656a337ed00a520" - integrity sha512-ISL3c6i/v+JOsUHEbngDHaobmbgu6oSY0htKas1RjLWGkWXDLgEXMRjQ/xDbNVYH00Mto7mmq+nrjkNNbqOrfQ== - -"@nx/react@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/react/-/react-16.0.0.tgz#d07d5ffafba88c7f569324155ee13c921446afe0" - integrity sha512-qPvivaOO5WpHn/Ac919NajzgAyimpr4lAwboF1TcrrF6RqvkimqXGmFBQLjgUG5R/e0iflPzlOHY0CB5033zwA== - dependencies: - "@nrwl/react" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/js" "16.0.0" - "@nx/linter" "16.0.0" - "@nx/web" "16.0.0" - "@phenomnomnominal/tsquery" "~5.0.1" - "@svgr/webpack" "^6.1.2" - chalk "^4.1.0" - file-loader "^6.2.0" - minimatch "3.0.5" - -"@nx/rollup@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/rollup/-/rollup-16.0.0.tgz#b62088720370f4e460d02362d107663595942b15" - integrity sha512-bPY4ravpaOYlryq1FsZ5ySaoXjjhR5Jiqv/2TO38/pg/yKv24ZxnQQLTnXWfCru5HuQUeO8IX9WLXvinXsR6tw== - dependencies: - "@nrwl/rollup" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/js" "16.0.0" - "@rollup/plugin-babel" "^5.3.0" - "@rollup/plugin-commonjs" "^20.0.0" - "@rollup/plugin-image" "^2.1.0" - "@rollup/plugin-json" "^4.1.0" - "@rollup/plugin-node-resolve" "^13.0.4" - autoprefixer "^10.4.9" - babel-plugin-transform-async-to-promises "^0.8.15" - chalk "^4.1.0" - dotenv "~10.0.0" - postcss "^8.4.14" - rollup "^2.56.2" - rollup-plugin-copy "^3.4.0" - rollup-plugin-peer-deps-external "^2.2.4" - rollup-plugin-postcss "^4.0.1" - rollup-plugin-typescript2 "0.34.1" - rxjs "^6.5.4" - tslib "^2.3.0" - -"@nx/web@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/web/-/web-16.0.0.tgz#da11135f761e37d7b55085b1424d0efba8e284d9" - integrity sha512-QC0r+XGVqfzpREhKAayElY3q9EAX8r1RRcilViKFlL7k3Yq/UhFWvNV2+Ll9fKeaGretvFX2KSNtAbyjoO+lCg== - dependencies: - "@nrwl/web" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/js" "16.0.0" - chalk "^4.1.0" - chokidar "^3.5.1" - http-server "^14.1.0" - ignore "^5.0.4" - tslib "^2.3.0" - -"@nx/webpack@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/webpack/-/webpack-16.0.0.tgz#71e309b2db2e1b860ff4fc322597e3ed56447298" - integrity sha512-7goJiGaBis16JXyVsSae1hmN5Hej+4z1PbkO7tTWzx7prp67ozgzQV2duhE8pmBSohNXjtSyZAGxFE9J7ACJ9A== - dependencies: - "@babel/core" "^7.15.0" - "@nrwl/webpack" "16.0.0" - "@nx/devkit" "16.0.0" - "@nx/js" "16.0.0" - autoprefixer "^10.4.9" - babel-loader "^9.1.2" - chalk "^4.1.0" - chokidar "^3.5.1" - copy-webpack-plugin "^10.2.4" - css-loader "^6.4.0" - css-minimizer-webpack-plugin "^3.4.1" - dotenv "~10.0.0" - file-loader "^6.2.0" - fork-ts-checker-webpack-plugin "7.2.13" - ignore "^5.0.4" - less "4.1.3" - less-loader "11.1.0" - license-webpack-plugin "^4.0.2" - loader-utils "^2.0.3" - mini-css-extract-plugin "~2.4.7" - parse5 "4.0.0" - postcss "^8.4.14" - postcss-import "~14.1.0" - postcss-loader "^6.1.1" - rxjs "^6.5.4" - sass "^1.42.1" - sass-loader "^12.2.0" - source-map-loader "^3.0.0" - style-loader "^3.3.0" - stylus "^0.55.0" - stylus-loader "^7.1.0" - terser-webpack-plugin "^5.3.3" - ts-loader "^9.3.1" - ts-node "10.9.1" - tsconfig-paths "^4.1.2" - tsconfig-paths-webpack-plugin "4.0.0" - tslib "^2.3.0" - webpack "^5.75.0" - webpack-dev-server "^4.9.3" - webpack-node-externals "^3.0.0" - webpack-subresource-integrity "^5.1.0" - -"@nx/webpack@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/webpack/-/webpack-16.4.0.tgz#d43af06d6b60cef01ae939433db6daacacd0c5e6" - integrity sha512-0uiGLiFvjgD2I91s/IdtY0Mdj86geiagUS4X1PkwCj9JpaLGIVkGperO/gByv9cwVOpaDh017mNIRQaiUY095g== - dependencies: - "@babel/core" "^7.15.0" - "@nrwl/webpack" "16.4.0" - "@nx/devkit" "16.4.0" - "@nx/js" "16.4.0" - autoprefixer "^10.4.9" - babel-loader "^9.1.2" - browserslist "^4.21.4" - chalk "^4.1.0" - chokidar "^3.5.1" - copy-webpack-plugin "^10.2.4" - css-loader "^6.4.0" - css-minimizer-webpack-plugin "^5.0.0" - dotenv "~10.0.0" - file-loader "^6.2.0" - fork-ts-checker-webpack-plugin "7.2.13" - ignore "^5.0.4" - less "4.1.3" - less-loader "11.1.0" - license-webpack-plugin "^4.0.2" - loader-utils "^2.0.3" - mini-css-extract-plugin "~2.4.7" - parse5 "4.0.0" - postcss "^8.4.14" - postcss-import "~14.1.0" - postcss-loader "^6.1.1" - rxjs "^7.8.0" - sass "^1.42.1" - sass-loader "^12.2.0" - source-map-loader "^3.0.0" - style-loader "^3.3.0" - stylus "^0.59.0" - stylus-loader "^7.1.0" - terser-webpack-plugin "^5.3.3" - ts-loader "^9.3.1" - ts-node "10.9.1" - tsconfig-paths "^4.1.2" - tsconfig-paths-webpack-plugin "4.0.0" - tslib "^2.3.0" - webpack "^5.80.0" - webpack-dev-server "^4.9.3" - webpack-node-externals "^3.0.0" - webpack-subresource-integrity "^5.1.0" - -"@nx/workspace@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-16.0.0.tgz#47e9af24baad193e303e8cf023193ba6a228d490" - integrity sha512-+yjcuFJ0r1MBokL5KqpnSwRJz8zNZMwAJRAcDNbauo5OeEDVGb4TXFuwGWWnkxQI2WTFSaTyuEE8Ga50s/nNyw== - dependencies: - "@nrwl/workspace" "16.0.0" - "@nx/devkit" "16.0.0" - "@parcel/watcher" "2.0.4" - chalk "^4.1.0" - chokidar "^3.5.1" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - dotenv "~10.0.0" - figures "3.2.0" - flat "^5.0.2" - ignore "^5.0.4" - minimatch "3.0.5" - npm-run-path "^4.0.1" - nx "16.0.0" - open "^8.4.0" - rxjs "^6.5.4" - tmp "~0.2.1" - tslib "^2.3.0" - yargs "^17.6.2" - yargs-parser "21.1.1" - -"@nx/workspace@16.4.0": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-16.4.0.tgz#05ff080efa73b42c27f6c02253f7a30e7e47b0ac" - integrity sha512-nuFlhrl9FI6Tb2RvSNRGTVl/X3Cvf/vV2DO1MiyMjZWasZLhAr9rjtLYgTrJW4uQLJOn6MXJzP97w/Boa4pfRQ== - dependencies: - "@nrwl/workspace" "16.4.0" - "@nx/devkit" "16.4.0" - "@parcel/watcher" "2.0.4" - chalk "^4.1.0" - chokidar "^3.5.1" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - dotenv "~10.0.0" - figures "3.2.0" - flat "^5.0.2" - ignore "^5.0.4" - minimatch "3.0.5" - npm-run-path "^4.0.1" - nx "16.4.0" - open "^8.4.0" - rxjs "^7.8.0" - tmp "~0.2.1" - tslib "^2.3.0" - yargs "^17.6.2" - yargs-parser "21.1.1" - -"@octokit/auth-token@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db" - integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== - -"@octokit/core@^4.2.1": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907" - integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== - dependencies: - "@octokit/auth-token" "^3.0.0" - "@octokit/graphql" "^5.0.0" - "@octokit/request" "^6.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^7.0.0": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.6.tgz#791f65d3937555141fb6c08f91d618a7d645f1e2" - integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg== - dependencies: - "@octokit/types" "^9.0.0" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^5.0.0": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" - integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== - dependencies: - "@octokit/request" "^6.0.0" - "@octokit/types" "^9.0.0" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^18.0.0": - version "18.1.1" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" - integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== - -"@octokit/plugin-paginate-rest@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz#f86456a7a1fe9e58fec6385a85cf1b34072341f8" - integrity sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ== - dependencies: - "@octokit/tsconfig" "^1.0.2" - "@octokit/types" "^9.2.3" - -"@octokit/plugin-retry@^4.1.3": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-4.1.6.tgz#e33b1e520f0bd24d515c9901676b55df64dfc795" - integrity sha512-obkYzIgEC75r8+9Pnfiiqy3y/x1bc3QLE5B7qvv9wi9Kj0R5tGQFC6QMBg1154WQ9lAVypuQDGyp3hNpp15gQQ== - dependencies: - "@octokit/types" "^9.0.0" - bottleneck "^2.15.3" - -"@octokit/plugin-throttling@^5.2.3": - version "5.2.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-5.2.3.tgz#9f552a14dcee5c7326dd9dee64a71ea76b108814" - integrity sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q== - dependencies: - "@octokit/types" "^9.0.0" - bottleneck "^2.15.3" - -"@octokit/request-error@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" - integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== - dependencies: - "@octokit/types" "^9.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^6.0.0": - version "6.2.8" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.8.tgz#aaf480b32ab2b210e9dadd8271d187c93171d8eb" - integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw== - dependencies: - "@octokit/endpoint" "^7.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/tsconfig@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@octokit/tsconfig/-/tsconfig-1.0.2.tgz#59b024d6f3c0ed82f00d08ead5b3750469125af7" - integrity sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA== - -"@octokit/types@^9.0.0", "@octokit/types@^9.2.3": - version "9.3.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.3.2.tgz#3f5f89903b69f6a2d196d78ec35f888c0013cac5" - integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA== - dependencies: - "@octokit/openapi-types" "^18.0.0" - -"@parcel/bundler-default@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.12.0.tgz#b8f6f3fc3f497714bd54e19882aaa116e97df4a4" - integrity sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/graph" "3.2.0" - "@parcel/plugin" "2.12.0" - "@parcel/rust" "2.12.0" - "@parcel/utils" "2.12.0" - nullthrows "^1.1.1" - -"@parcel/cache@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.12.0.tgz#b8fd2ea2bc7a2353a9b20344cc191bfb4f8284f3" - integrity sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw== - dependencies: - "@parcel/fs" "2.12.0" - "@parcel/logger" "2.12.0" - "@parcel/utils" "2.12.0" - lmdb "2.8.5" - -"@parcel/codeframe@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.12.0.tgz#9ea75bd7ae6c5f7fadf42a5e64657cf88fdcb29e" - integrity sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg== - dependencies: - chalk "^4.1.0" - -"@parcel/compressor-raw@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.12.0.tgz#71012b695c870f1d26bfd8d56983c14bf13fd996" - integrity sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A== - dependencies: - "@parcel/plugin" "2.12.0" - -"@parcel/config-default@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.12.0.tgz#7b213348db349c6042a80dfd4a7eab707a1dfbfa" - integrity sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg== - dependencies: - "@parcel/bundler-default" "2.12.0" - "@parcel/compressor-raw" "2.12.0" - "@parcel/namer-default" "2.12.0" - "@parcel/optimizer-css" "2.12.0" - "@parcel/optimizer-htmlnano" "2.12.0" - "@parcel/optimizer-image" "2.12.0" - "@parcel/optimizer-svgo" "2.12.0" - "@parcel/optimizer-swc" "2.12.0" - "@parcel/packager-css" "2.12.0" - "@parcel/packager-html" "2.12.0" - "@parcel/packager-js" "2.12.0" - "@parcel/packager-raw" "2.12.0" - "@parcel/packager-svg" "2.12.0" - "@parcel/packager-wasm" "2.12.0" - "@parcel/reporter-dev-server" "2.12.0" - "@parcel/resolver-default" "2.12.0" - "@parcel/runtime-browser-hmr" "2.12.0" - "@parcel/runtime-js" "2.12.0" - "@parcel/runtime-react-refresh" "2.12.0" - "@parcel/runtime-service-worker" "2.12.0" - "@parcel/transformer-babel" "2.12.0" - "@parcel/transformer-css" "2.12.0" - "@parcel/transformer-html" "2.12.0" - "@parcel/transformer-image" "2.12.0" - "@parcel/transformer-js" "2.12.0" - "@parcel/transformer-json" "2.12.0" - "@parcel/transformer-postcss" "2.12.0" - "@parcel/transformer-posthtml" "2.12.0" - "@parcel/transformer-raw" "2.12.0" - "@parcel/transformer-react-refresh-wrap" "2.12.0" - "@parcel/transformer-svg" "2.12.0" - -"@parcel/core@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.12.0.tgz#ea5734f008300bc57aaff2ba0f7949724c93b56d" - integrity sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - "@parcel/cache" "2.12.0" - "@parcel/diagnostic" "2.12.0" - "@parcel/events" "2.12.0" - "@parcel/fs" "2.12.0" - "@parcel/graph" "3.2.0" - "@parcel/logger" "2.12.0" - "@parcel/package-manager" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/profiler" "2.12.0" - "@parcel/rust" "2.12.0" - "@parcel/source-map" "^2.1.1" - "@parcel/types" "2.12.0" - "@parcel/utils" "2.12.0" - "@parcel/workers" "2.12.0" - abortcontroller-polyfill "^1.1.9" - base-x "^3.0.8" - browserslist "^4.6.6" - clone "^2.1.1" - dotenv "^7.0.0" - dotenv-expand "^5.1.0" - json5 "^2.2.0" - msgpackr "^1.9.9" - nullthrows "^1.1.1" - semver "^7.5.2" - -"@parcel/diagnostic@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.12.0.tgz#b38057d819ea2edc32018a1d51df434f07840be9" - integrity sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - nullthrows "^1.1.1" - -"@parcel/events@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.12.0.tgz#ef67e3fbb96806b3531a37bcf95e8fbb3818ffa2" - integrity sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA== - -"@parcel/fs@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.12.0.tgz#8c9029353888311ba2e9e2198dbe6c7c1da635c0" - integrity sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q== - dependencies: - "@parcel/rust" "2.12.0" - "@parcel/types" "2.12.0" - "@parcel/utils" "2.12.0" - "@parcel/watcher" "^2.0.7" - "@parcel/workers" "2.12.0" - -"@parcel/graph@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-3.2.0.tgz#309e6e3f19ef4ea7f71b2341ec1bcc08e7c43523" - integrity sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA== - dependencies: - nullthrows "^1.1.1" - -"@parcel/logger@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.12.0.tgz#0b866b7aee8a0a462596a80cd46bd8b29c318758" - integrity sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/events" "2.12.0" - -"@parcel/markdown-ansi@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.12.0.tgz#a4301321fa784a28ba817e65e41432fe8b3b3192" - integrity sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w== - dependencies: - chalk "^4.1.0" - -"@parcel/namer-default@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.12.0.tgz#f9903da8e4c5c3e33fc8ab70b222be520a46da5d" - integrity sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - nullthrows "^1.1.1" - -"@parcel/node-resolver-core@3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.3.0.tgz#f40d80de800baa7cf230406b7122c8711ac4cdc8" - integrity sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - "@parcel/diagnostic" "2.12.0" - "@parcel/fs" "2.12.0" - "@parcel/rust" "2.12.0" - "@parcel/utils" "2.12.0" - nullthrows "^1.1.1" - semver "^7.5.2" - -"@parcel/optimizer-css@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.12.0.tgz#f44f38dc7136b511a849343eea04714a42e1ba5f" - integrity sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.12.0" - browserslist "^4.6.6" - lightningcss "^1.22.1" - nullthrows "^1.1.1" - -"@parcel/optimizer-htmlnano@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.12.0.tgz#e389d56d3f5cd2f6dd464a756a0704a65e527a9b" - integrity sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ== - dependencies: - "@parcel/plugin" "2.12.0" - htmlnano "^2.0.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - svgo "^2.4.0" - -"@parcel/optimizer-image@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.12.0.tgz#46dd3c2a871700076c17376d27f6d46d030a0717" - integrity sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/rust" "2.12.0" - "@parcel/utils" "2.12.0" - "@parcel/workers" "2.12.0" - -"@parcel/optimizer-svgo@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.12.0.tgz#f1e411cbc3a3c56e05aa5fb2e1edd1ecc7016378" - integrity sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - svgo "^2.4.0" - -"@parcel/optimizer-swc@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.12.0.tgz#bacbdb4f6f4a7e0b7086f30b683e3f3f2f980c96" - integrity sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.12.0" - "@swc/core" "^1.3.36" - nullthrows "^1.1.1" - -"@parcel/package-manager@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.12.0.tgz#7e1eb5f652544e045f7240fa6cf92e5ff1627624" - integrity sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/fs" "2.12.0" - "@parcel/logger" "2.12.0" - "@parcel/node-resolver-core" "3.3.0" - "@parcel/types" "2.12.0" - "@parcel/utils" "2.12.0" - "@parcel/workers" "2.12.0" - "@swc/core" "^1.3.36" - semver "^7.5.2" - -"@parcel/packager-css@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.12.0.tgz#bee2908608f306186695c6505c3303548751a7b8" - integrity sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.12.0" - lightningcss "^1.22.1" - nullthrows "^1.1.1" - -"@parcel/packager-html@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.12.0.tgz#dd62a483043982880a63e68ce8d8132f60becd3d" - integrity sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/types" "2.12.0" - "@parcel/utils" "2.12.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - -"@parcel/packager-js@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.12.0.tgz#f81f64d16560b97e70bbb4cf568555f990afa2f6" - integrity sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/rust" "2.12.0" - "@parcel/source-map" "^2.1.1" - "@parcel/types" "2.12.0" - "@parcel/utils" "2.12.0" - globals "^13.2.0" - nullthrows "^1.1.1" - -"@parcel/packager-raw@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.12.0.tgz#043b704814ff2bcc884cf33e6542f72e246367e0" - integrity sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA== - dependencies: - "@parcel/plugin" "2.12.0" - -"@parcel/packager-svg@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.12.0.tgz#2c392243373d60fc834a08d15003f239c34f39a7" - integrity sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/types" "2.12.0" - "@parcel/utils" "2.12.0" - posthtml "^0.16.4" - -"@parcel/packager-wasm@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-wasm/-/packager-wasm-2.12.0.tgz#39dbd91e7bf68456dbc9d19a412017e2b513736f" - integrity sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A== - dependencies: - "@parcel/plugin" "2.12.0" - -"@parcel/plugin@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.12.0.tgz#3db4237e8977ef5b5378b65eaffb809d2026431a" - integrity sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g== - dependencies: - "@parcel/types" "2.12.0" - -"@parcel/profiler@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.12.0.tgz#8541ca5d27500aebc843b1de081734442e5ee054" - integrity sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/events" "2.12.0" - chrome-trace-event "^1.0.2" - -"@parcel/reporter-cli@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.12.0.tgz#e067b4eeca49c7120d3455d99810bed5bc825920" - integrity sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/types" "2.12.0" - "@parcel/utils" "2.12.0" - chalk "^4.1.0" - term-size "^2.2.1" - -"@parcel/reporter-dev-server@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.12.0.tgz#bd4c9e3d6dc8d8b178564a336f46b4f70acf3e79" - integrity sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - -"@parcel/reporter-tracer@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.12.0.tgz#680e8be677277318c656c1825dbe98a8bfb64e16" - integrity sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - chrome-trace-event "^1.0.3" - nullthrows "^1.1.1" - -"@parcel/resolver-default@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.12.0.tgz#005b6bc01de9d166a97d7ef30daf339973c4898a" - integrity sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA== - dependencies: - "@parcel/node-resolver-core" "3.3.0" - "@parcel/plugin" "2.12.0" - -"@parcel/runtime-browser-hmr@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.12.0.tgz#9d045785b83760e305c9efd3d6300a9ff73bcfaf" - integrity sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - -"@parcel/runtime-js@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.12.0.tgz#da6f7da041cb157556822ad60fefcdbc790dda9c" - integrity sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - nullthrows "^1.1.1" - -"@parcel/runtime-react-refresh@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.12.0.tgz#58c17552766492ec2005ffedfa04ecb29386dd8b" - integrity sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - react-error-overlay "6.0.9" - react-refresh "^0.9.0" - -"@parcel/runtime-service-worker@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.12.0.tgz#67ee1e6dbc5441651fed04ecb2bd7ebe1e362679" - integrity sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - nullthrows "^1.1.1" - -"@parcel/rust@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/rust/-/rust-2.12.0.tgz#135df4dd8c63d97720379777c5bb4a2680a201cd" - integrity sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw== - -"@parcel/source-map@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782" - integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew== - dependencies: - detect-libc "^1.0.3" - -"@parcel/transformer-babel@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.12.0.tgz#29be68f2fad4688b33ef3f03ef2b8c3e9928b87f" - integrity sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.12.0" - browserslist "^4.6.6" - json5 "^2.2.0" - nullthrows "^1.1.1" - semver "^7.5.2" - -"@parcel/transformer-css@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.12.0.tgz#218a98948c9410c17287183d80ca9bd9943cc9e9" - integrity sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.12.0" - browserslist "^4.6.6" - lightningcss "^1.22.1" - nullthrows "^1.1.1" - -"@parcel/transformer-html@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.12.0.tgz#8681b089e2b20c5fda1c966cefb8de4d8fb2ce80" - integrity sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/rust" "2.12.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^7.5.2" - srcset "4" - -"@parcel/transformer-image@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.12.0.tgz#8ba2ca3b5d88287bf38c8244b2714158c9d34b2e" - integrity sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - "@parcel/workers" "2.12.0" - nullthrows "^1.1.1" - -"@parcel/transformer-js@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.12.0.tgz#e6bf0c312f78603faf98ce546086898506e3811f" - integrity sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/rust" "2.12.0" - "@parcel/source-map" "^2.1.1" - "@parcel/utils" "2.12.0" - "@parcel/workers" "2.12.0" - "@swc/helpers" "^0.5.0" - browserslist "^4.6.6" - nullthrows "^1.1.1" - regenerator-runtime "^0.13.7" - semver "^7.5.2" - -"@parcel/transformer-json@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.12.0.tgz#16cc0454e4862350b605a5e2009d050c676c6ea5" - integrity sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ== - dependencies: - "@parcel/plugin" "2.12.0" - json5 "^2.2.0" - -"@parcel/transformer-postcss@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.12.0.tgz#195f4fb86f36f42b5de82076ea36b9d850f4832e" - integrity sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/rust" "2.12.0" - "@parcel/utils" "2.12.0" - clone "^2.1.1" - nullthrows "^1.1.1" - postcss-value-parser "^4.2.0" - semver "^7.5.2" - -"@parcel/transformer-posthtml@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.12.0.tgz#a906c26278e03455f6186b7dbd9f5b63eaa26948" - integrity sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^7.5.2" - -"@parcel/transformer-raw@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.12.0.tgz#1ee7e02214f777cf3a5bf53580ee4dadfaf8a44c" - integrity sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ== - dependencies: - "@parcel/plugin" "2.12.0" - -"@parcel/transformer-react-refresh-wrap@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.12.0.tgz#cf079353126f2bb820209736a75f868d0df58d92" - integrity sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw== - dependencies: - "@parcel/plugin" "2.12.0" - "@parcel/utils" "2.12.0" - react-refresh "^0.9.0" - -"@parcel/transformer-svg@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.12.0.tgz#0281e89bf0f438ec161c19b59a8a8978434a3621" - integrity sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/plugin" "2.12.0" - "@parcel/rust" "2.12.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^7.5.2" - -"@parcel/types@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.12.0.tgz#caf0af00ee0c7228b350eca5f4d3a5b85ce457ad" - integrity sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ== - dependencies: - "@parcel/cache" "2.12.0" - "@parcel/diagnostic" "2.12.0" - "@parcel/fs" "2.12.0" - "@parcel/package-manager" "2.12.0" - "@parcel/source-map" "^2.1.1" - "@parcel/workers" "2.12.0" - utility-types "^3.10.0" - -"@parcel/utils@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.12.0.tgz#ac900726e7cb12a9e6392081fa05b756183f65fd" - integrity sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g== - dependencies: - "@parcel/codeframe" "2.12.0" - "@parcel/diagnostic" "2.12.0" - "@parcel/logger" "2.12.0" - "@parcel/markdown-ansi" "2.12.0" - "@parcel/rust" "2.12.0" - "@parcel/source-map" "^2.1.1" - chalk "^4.1.0" - nullthrows "^1.1.1" - -"@parcel/watcher-android-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84" - integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== - -"@parcel/watcher-darwin-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz#c817c7a3b4f3a79c1535bfe54a1c2818d9ffdc34" - integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== - -"@parcel/watcher-darwin-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020" - integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== - -"@parcel/watcher-freebsd-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8" - integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== - -"@parcel/watcher-linux-arm-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d" - integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== - -"@parcel/watcher-linux-arm64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7" - integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== - -"@parcel/watcher-linux-arm64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635" - integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== - -"@parcel/watcher-linux-x64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39" - integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== - -"@parcel/watcher-linux-x64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16" - integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== - -"@parcel/watcher-wasm@^2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz#c4353e4fdb96ee14389856f7f6f6d21b7dcef9e1" - integrity sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA== - dependencies: - is-glob "^4.0.3" - micromatch "^4.0.5" - napi-wasm "^1.1.0" - -"@parcel/watcher-win32-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc" - integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== - -"@parcel/watcher-win32-ia32@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7" - integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== - -"@parcel/watcher-win32-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf" - integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== - -"@parcel/watcher@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" - integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== - dependencies: - node-addon-api "^3.2.1" - node-gyp-build "^4.3.0" - -"@parcel/watcher@^2.0.7", "@parcel/watcher@^2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.1.tgz#a50275151a1bb110879c6123589dba90c19f1bf8" - integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== - dependencies: - detect-libc "^1.0.3" - is-glob "^4.0.3" - micromatch "^4.0.5" - node-addon-api "^7.0.0" - optionalDependencies: - "@parcel/watcher-android-arm64" "2.4.1" - "@parcel/watcher-darwin-arm64" "2.4.1" - "@parcel/watcher-darwin-x64" "2.4.1" - "@parcel/watcher-freebsd-x64" "2.4.1" - "@parcel/watcher-linux-arm-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-musl" "2.4.1" - "@parcel/watcher-linux-x64-glibc" "2.4.1" - "@parcel/watcher-linux-x64-musl" "2.4.1" - "@parcel/watcher-win32-arm64" "2.4.1" - "@parcel/watcher-win32-ia32" "2.4.1" - "@parcel/watcher-win32-x64" "2.4.1" - -"@parcel/workers@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.12.0.tgz#773182b5006741102de8ae36d18a5a9e3320ebd1" - integrity sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw== - dependencies: - "@parcel/diagnostic" "2.12.0" - "@parcel/logger" "2.12.0" - "@parcel/profiler" "2.12.0" - "@parcel/types" "2.12.0" - "@parcel/utils" "2.12.0" - nullthrows "^1.1.1" - -"@peersyst/near-mobile-signer@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@peersyst/near-mobile-signer/-/near-mobile-signer-1.1.0.tgz#4d1346f37dd1a05a7225d9c5cb8c59cbd0b2f258" - integrity sha512-5bbN1EHLDpEpM6J8lFN1y+bAiDIsTa8rhjtYv9PMBr0wiEY951BQR3kSLPGwMbX6oBpV1ZNNafTYHdtZJngb1Q== - dependencies: - bn.js "^5.2.1" - borsh "^0.7.0" - js-sha256 "^0.9.0" - near-api-js "^4.0.0" - parcel "^2.9.3" - -"@phenomnomnominal/tsquery@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz#a2a5abc89f92c01562a32806655817516653a388" - integrity sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA== - dependencies: - esquery "^1.4.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pmmmwh/react-refresh-webpack-plugin@0.5.7": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.7.tgz#58f8217ba70069cc6a73f5d7e05e85b458c150e2" - integrity sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q== - dependencies: - ansi-html-community "^0.0.8" - common-path-prefix "^3.0.0" - core-js-pure "^3.8.1" - error-stack-parser "^2.0.6" - find-up "^5.0.0" - html-entities "^2.1.0" - loader-utils "^2.0.0" - schema-utils "^3.0.0" - source-map "^0.7.3" - -"@pnpm/config.env-replace@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" - integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== - -"@pnpm/network.ca-file@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" - integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== - dependencies: - graceful-fs "4.2.10" - -"@pnpm/npm-conf@^2.1.0": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" - integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== - dependencies: - "@pnpm/config.env-replace" "^1.1.0" - "@pnpm/network.ca-file" "^1.0.1" - config-chain "^1.1.11" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@ramper/constants@0.0.15": - version "0.0.15" - resolved "https://registry.yarnpkg.com/@ramper/constants/-/constants-0.0.15.tgz#3246e1c62a36a2d48f5c6bf24fe188455bd2c5ae" - integrity sha512-xdM9F0w4rT9AW4DQwJAFDE9MUIj0IbrU1FtYbgkQueg+aOXVXf7tM3Jw+oVhhhfKnjahYgtxFchjEPOTInMHmA== - dependencies: - "@ramper/utils" "0.0.2" - -"@ramper/core@0.0.30": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@ramper/core/-/core-0.0.30.tgz#e6b0421c319c634efcceb6a649026189597c4147" - integrity sha512-f0WzKV9uXmf9K0NvVAKg8z+W3u22WpA5SzS1rJ6zsBm80QZdwScFZhDYNfAHZpaHG1c0iaGpHcrYsl1FXe3PKg== - dependencies: - "@ramper/logger" "0.0.1" - "@ramper/utils" "0.0.2" - jwt-decode "^3.1.2" - jwt-simple "0.5.6" - postmate "1.5.2" - -"@ramper/logger@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@ramper/logger/-/logger-0.0.1.tgz#181a9b339e8ee2f942b29293c960ac73b0686cca" - integrity sha512-G1A/P9XSS+41VNE2VdOOj8OkYjKSJHdCMs2YOEGPFRZUzuQFaMWOkc2ZxEA9zTdJWpcX0Hptp/d4Y2tXYsZX/A== - -"@ramper/near@0.0.30": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@ramper/near/-/near-0.0.30.tgz#5303d38627cad26ba2641949ab826233970770b6" - integrity sha512-Qp7fRF4yoBhBFjif2jBEbLj1l+5632JTP6YtokUh21CerNe7SRi7EEQzeTPxCvYG0cz7BFSlx9O9uQZ/6SC48g== - dependencies: - "@ramper/constants" "0.0.15" - "@ramper/core" "0.0.30" - "@ramper/sdk-loader" "0.0.1" - "@ramper/utils" "0.0.2" - -"@ramper/sdk-loader@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@ramper/sdk-loader/-/sdk-loader-0.0.1.tgz#b67f59f64c7c8775da9828f85b662afc0be26973" - integrity sha512-nmjsh23Gy0jh9xNmoqzYEz2UoPRFzDh1yqYr1/32pK20TPH6xDxEyYiDynLD+/Vpff2ThjDGEyUI67RnvVsiRQ== - -"@ramper/utils@0.0.2": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@ramper/utils/-/utils-0.0.2.tgz#b7405db56ce0c6338f483a4dc0462e7219a9cfaa" - integrity sha512-EZTAFInMXO9UoBWTrgKV8LXQHiwgDe5big+b1at7q1I3xxxdsCOs/9KhvG7uKlmyiDiz2PLTJsnU4qZ3KTWtVQ== - dependencies: - "@types/ua-parser-js" "^0.7.36" - await-to-js "3.0.0" - slugify "^1.6.5" - ua-parser-js "^1.0.2" - -"@rollup/plugin-babel@^5.3.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-commonjs@^20.0.0": - version "20.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz#3246872dcbcb18a54aaa6277a8c7d7f1b155b745" - integrity sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - -"@rollup/plugin-image@^2.1.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-image/-/plugin-image-2.1.1.tgz#898d6b59ac0025d7971ef45640ab330cb0663b0c" - integrity sha512-AgP4U85zuQJdUopLUCM+hTf45RepgXeTb8EJsleExVy99dIoYpt3ZlDYJdKmAc2KLkNntCDg6BPJvgJU3uGF+g== - dependencies: - "@rollup/pluginutils" "^3.1.0" - mini-svg-data-uri "^1.2.3" - -"@rollup/plugin-json@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - -"@rollup/plugin-node-resolve@^13.0.4": - version "13.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" - integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - deepmerge "^4.2.2" - is-builtin-module "^3.1.0" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@rollup/pluginutils@^4.1.2": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" - integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== - dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" - -"@rushstack/eslint-patch@^1.3.3": - version "1.10.3" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" - integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== - -"@safe-global/safe-apps-provider@0.18.1": - version "0.18.1" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.1.tgz#287b5a1e2ef3be630dacde54279409df3ced8202" - integrity sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg== - dependencies: - "@safe-global/safe-apps-sdk" "^8.1.0" - events "^3.3.0" - -"@safe-global/safe-apps-sdk@8.1.0", "@safe-global/safe-apps-sdk@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-8.1.0.tgz#d1d0c69cd2bf4eef8a79c5d677d16971926aa64a" - integrity sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w== - dependencies: - "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" - viem "^1.0.0" - -"@safe-global/safe-gateway-typescript-sdk@^3.5.3": - version "3.20.0" - resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.20.0.tgz#980cbae3b6342a4b1ed813d037bf580f9285e630" - integrity sha512-BUvzWY4gHBiIZv2e6EVPtv/ur7OuJuyEiiXa0qylpHQ5a9oR2yUjqtZwnFaunyNIkD98vyR/F/ql40JWn1OrTA== - -"@schematics/angular@15.2.8": - version "15.2.8" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-15.2.8.tgz#d845903f1cc477d299f968eb5bc40a9855cfd911" - integrity sha512-F49IEzCFxQlpaMIgTO/wF1l/CLQKif7VaiDdyiTKOeT22IMmyd61FUmWDyZYfCBqMlvBmvDGx64HaHWes1HYCg== - dependencies: - "@angular-devkit/core" "15.2.8" - "@angular-devkit/schematics" "15.2.8" - jsonc-parser "3.2.0" - -"@schematics/angular@16.1.8": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-16.1.8.tgz#74b763a01578f4a95f29603f2bf06908dd6ef429" - integrity sha512-gTHy1A/E9BCr0sj3VCr6eBYkgVkO96QWiZcFumedGnvstvp5wiCoIoJPLLfYaxVt1vt08xmnmS3OZ3r0qCLdpA== - dependencies: - "@angular-devkit/core" "16.1.8" - "@angular-devkit/schematics" "16.1.8" - jsonc-parser "3.2.0" - -"@scure/base@^1.1.3", "@scure/base@~1.1.0", "@scure/base@~1.1.2", "@scure/base@~1.1.4": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" - integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== - -"@scure/bip32@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" - integrity sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA== - dependencies: - "@noble/curves" "~1.2.0" - "@noble/hashes" "~1.3.2" - "@scure/base" "~1.1.2" - -"@scure/bip32@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" - integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== - dependencies: - "@noble/curves" "~1.3.0" - "@noble/hashes" "~1.3.2" - "@scure/base" "~1.1.4" - -"@scure/bip39@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" - integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== - dependencies: - "@noble/hashes" "~1.3.0" - "@scure/base" "~1.1.0" - -"@scure/bip39@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" - integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== - dependencies: - "@noble/hashes" "~1.3.2" - "@scure/base" "~1.1.4" - -"@semantic-release/commit-analyzer@9.0.2", "@semantic-release/commit-analyzer@^9.0.2": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz#a78e54f9834193b55f1073fa6258eecc9a545e03" - integrity sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g== - dependencies: - conventional-changelog-angular "^5.0.0" - conventional-commits-filter "^2.0.0" - conventional-commits-parser "^3.2.3" - debug "^4.0.0" - import-from "^4.0.0" - lodash "^4.17.4" - micromatch "^4.0.2" - -"@semantic-release/error@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-3.0.0.tgz#30a3b97bbb5844d695eb22f9d3aa40f6a92770c2" - integrity sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw== - -"@semantic-release/git@10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@semantic-release/git/-/git-10.0.1.tgz#c646e55d67fae623875bf3a06a634dd434904498" - integrity sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w== - dependencies: - "@semantic-release/error" "^3.0.0" - aggregate-error "^3.0.0" - debug "^4.0.0" - dir-glob "^3.0.0" - execa "^5.0.0" - lodash "^4.17.4" - micromatch "^4.0.0" - p-reduce "^2.0.0" - -"@semantic-release/github@^8.0.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-8.1.0.tgz#c31fc5852d32975648445804d1984cd96e72c4d0" - integrity sha512-erR9E5rpdsz0dW1I7785JtndQuMWN/iDcemcptf67tBNOmBUN0b2YNOgcjYUnBpgRpZ5ozfBHrK7Bz+2ets/Dg== - dependencies: - "@octokit/core" "^4.2.1" - "@octokit/plugin-paginate-rest" "^6.1.2" - "@octokit/plugin-retry" "^4.1.3" - "@octokit/plugin-throttling" "^5.2.3" - "@semantic-release/error" "^3.0.0" - aggregate-error "^3.0.0" - debug "^4.0.0" - dir-glob "^3.0.0" - fs-extra "^11.0.0" - globby "^11.0.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.0" - issue-parser "^6.0.0" - lodash "^4.17.4" - mime "^3.0.0" - p-filter "^2.0.0" - url-join "^4.0.0" - -"@semantic-release/npm@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-9.0.0.tgz#b4868bb35cc64c3a040791661311398dd1fcadc0" - integrity sha512-hj2jqayS2SPUmFtCMCOQMX975uMDfRoymj1HvMSwYdaoI6hVZvhrTFPBgJeM85O0C+G3IFviAUar5gel/1VGDQ== - dependencies: - "@semantic-release/error" "^3.0.0" - aggregate-error "^3.0.0" - execa "^5.0.0" - fs-extra "^10.0.0" - lodash "^4.17.15" - nerf-dart "^1.0.0" - normalize-url "^6.0.0" - npm "^8.3.0" - rc "^1.2.8" - read-pkg "^5.0.0" - registry-auth-token "^4.0.0" - semver "^7.1.2" - tempy "^1.0.0" - -"@semantic-release/npm@^9.0.0": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-9.0.2.tgz#0f0903b4df6e93ef237372146bc376087fed4e1d" - integrity sha512-zgsynF6McdzxPnFet+a4iO9HpAlARXOM5adz7VGVCvj0ne8wtL2ZOQoDV2wZPDmdEotDIbVeJjafhelZjs9j6g== - dependencies: - "@semantic-release/error" "^3.0.0" - aggregate-error "^3.0.0" - execa "^5.0.0" - fs-extra "^11.0.0" - lodash "^4.17.15" - nerf-dart "^1.0.0" - normalize-url "^6.0.0" - npm "^8.3.0" - rc "^1.2.8" - read-pkg "^5.0.0" - registry-auth-token "^5.0.0" - semver "^7.1.2" - tempy "^1.0.0" - -"@semantic-release/release-notes-generator@^10.0.0": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz#85f7ca78bfa6b01fb5fda0ac48112855d69171dc" - integrity sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w== - dependencies: - conventional-changelog-angular "^5.0.0" - conventional-changelog-writer "^5.0.0" - conventional-commits-filter "^2.0.0" - conventional-commits-parser "^3.2.3" - debug "^4.0.0" - get-stream "^6.0.0" - import-from "^4.0.0" - into-stream "^6.0.0" - lodash "^4.17.4" - read-pkg-up "^7.0.0" - -"@sigstore/bundle@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-1.1.0.tgz#17f8d813b09348b16eeed66a8cf1c3d6bd3d04f1" - integrity sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== - dependencies: - "@sigstore/protobuf-specs" "^0.2.0" - -"@sigstore/protobuf-specs@^0.2.0": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" - integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== - -"@sigstore/sign@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-1.0.0.tgz#6b08ebc2f6c92aa5acb07a49784cb6738796f7b4" - integrity sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== - dependencies: - "@sigstore/bundle" "^1.1.0" - "@sigstore/protobuf-specs" "^0.2.0" - make-fetch-happen "^11.0.1" - -"@sigstore/tuf@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" - integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== - dependencies: - "@sigstore/protobuf-specs" "^0.2.0" - tuf-js "^1.1.7" - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@socket.io/component-emitter@~3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz#621270c02c0a5d4f4669eb1caa9723c91cf201de" - integrity sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg== - -"@stablelib/aead@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" - integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== - -"@stablelib/binary@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" - integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== - dependencies: - "@stablelib/int" "^1.0.1" - -"@stablelib/bytes@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" - integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== - -"@stablelib/chacha20poly1305@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" - integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== - dependencies: - "@stablelib/aead" "^1.0.1" - "@stablelib/binary" "^1.0.1" - "@stablelib/chacha" "^1.0.1" - "@stablelib/constant-time" "^1.0.1" - "@stablelib/poly1305" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/chacha@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" - integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/constant-time@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" - integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== - -"@stablelib/ed25519@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" - integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== - dependencies: - "@stablelib/random" "^1.0.2" - "@stablelib/sha512" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/hash@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" - integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== - -"@stablelib/hkdf@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" - integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== - dependencies: - "@stablelib/hash" "^1.0.1" - "@stablelib/hmac" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/hmac@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec" - integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA== - dependencies: - "@stablelib/constant-time" "^1.0.1" - "@stablelib/hash" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/int@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" - integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== - -"@stablelib/keyagreement@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" - integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== - dependencies: - "@stablelib/bytes" "^1.0.1" - -"@stablelib/poly1305@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" - integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== - dependencies: - "@stablelib/constant-time" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/random@1.0.2", "@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" - integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/sha256@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" - integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/hash" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/sha512@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" - integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/hash" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/wipe@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" - integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== - -"@stablelib/x25519@1.0.3", "@stablelib/x25519@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" - integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== - dependencies: - "@stablelib/keyagreement" "^1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/wipe" "^1.0.1" - -"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" - integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== - -"@svgr/babel-plugin-remove-jsx-attribute@*": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" - integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== - -"@svgr/babel-plugin-remove-jsx-empty-expression@*": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" - integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" - integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== - -"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" - integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== - -"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" - integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== - -"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" - integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== - -"@svgr/babel-plugin-transform-svg-component@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" - integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== - -"@svgr/babel-preset@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" - integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" - "@svgr/babel-plugin-remove-jsx-attribute" "*" - "@svgr/babel-plugin-remove-jsx-empty-expression" "*" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" - "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" - "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" - "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" - "@svgr/babel-plugin-transform-svg-component" "^6.5.1" - -"@svgr/core@^6.1.2", "@svgr/core@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" - integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - camelcase "^6.2.0" - cosmiconfig "^7.0.1" - -"@svgr/hast-util-to-babel-ast@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" - integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== - dependencies: - "@babel/types" "^7.20.0" - entities "^4.4.0" - -"@svgr/plugin-jsx@^6.1.2", "@svgr/plugin-jsx@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" - integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/hast-util-to-babel-ast" "^6.5.1" - svg-parser "^2.0.4" - -"@svgr/plugin-svgo@^6.1.2", "@svgr/plugin-svgo@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" - integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== - dependencies: - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - svgo "^2.8.0" - -"@svgr/webpack@6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.1.2.tgz#23fd605e9163deb7ef3feef52545ff11dc9989bf" - integrity sha512-5RzzWxFquywENwvnsiGjZ7IED+0l2lnICR3OKQ6OUyGgxlu+ac73NmDSXp6EPBz/ZTArpMZtug7jiPMUkXxnlg== - dependencies: - "@babel/core" "^7.15.5" - "@babel/plugin-transform-react-constant-elements" "^7.14.5" - "@babel/preset-env" "^7.15.6" - "@babel/preset-react" "^7.14.5" - "@babel/preset-typescript" "^7.15.0" - "@svgr/core" "^6.1.2" - "@svgr/plugin-jsx" "^6.1.2" - "@svgr/plugin-svgo" "^6.1.2" - -"@svgr/webpack@^6.1.2": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" - integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== - dependencies: - "@babel/core" "^7.19.6" - "@babel/plugin-transform-react-constant-elements" "^7.18.12" - "@babel/preset-env" "^7.19.4" - "@babel/preset-react" "^7.18.6" - "@babel/preset-typescript" "^7.18.6" - "@svgr/core" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - "@svgr/plugin-svgo" "^6.5.1" - -"@swc/core-darwin-arm64@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.6.13.tgz#dba8f8f747ad32fdb58d5b3aec4f740354d32d1b" - integrity sha512-SOF4buAis72K22BGJ3N8y88mLNfxLNprTuJUpzikyMGrvkuBFNcxYtMhmomO0XHsgLDzOJ+hWzcgjRNzjMsUcQ== - -"@swc/core-darwin-x64@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.6.13.tgz#c120207a9ced298f7382ff711bac10f6541c1c82" - integrity sha512-AW8akFSC+tmPE6YQQvK9S2A1B8pjnXEINg+gGgw0KRUUXunvu1/OEOeC5L2Co1wAwhD7bhnaefi06Qi9AiwOag== - -"@swc/core-linux-arm-gnueabihf@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.6.13.tgz#7b15a1fd32c18dfaf76706632cf8d19146df0d5f" - integrity sha512-f4gxxvDXVUm2HLYXRd311mSrmbpQF2MZ4Ja6XCQz1hWAxXdhRl1gpnZ+LH/xIfGSwQChrtLLVrkxdYUCVuIjFg== - -"@swc/core-linux-arm64-gnu@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.6.13.tgz#066b6e3c805110edb98e5125a222e3d866bf8f68" - integrity sha512-Nf/eoW2CbG8s+9JoLtjl9FByBXyQ5cjdBsA4efO7Zw4p+YSuXDgc8HRPC+E2+ns0praDpKNZtLvDtmF2lL+2Gg== - -"@swc/core-linux-arm64-musl@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.6.13.tgz#43a08bc118f117e485e8a9a23d3cb51fe8b4e301" - integrity sha512-2OysYSYtdw79prJYuKIiux/Gj0iaGEbpS2QZWCIY4X9sGoETJ5iMg+lY+YCrIxdkkNYd7OhIbXdYFyGs/w5LDg== - -"@swc/core-linux-x64-gnu@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.6.13.tgz#0f7358c95f566db6ed8a4249a190043497f41323" - integrity sha512-PkR4CZYJNk5hcd2+tMWBpnisnmYsUzazI1O5X7VkIGFcGePTqJ/bWlfUIVVExWxvAI33PQFzLbzmN5scyIUyGQ== - -"@swc/core-linux-x64-musl@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.6.13.tgz#6e11994ccf858edb3e70d2e8d700a5b1907a68fb" - integrity sha512-OdsY7wryTxCKwGQcwW9jwWg3cxaHBkTTHi91+5nm7hFPpmZMz1HivJrWAMwVE7iXFw+M4l6ugB/wCvpYrUAAjA== - -"@swc/core-win32-arm64-msvc@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.6.13.tgz#b9744644f02eb6519b0fe09031080cbf32174fb1" - integrity sha512-ap6uNmYjwk9M/+bFEuWRNl3hq4VqgQ/Lk+ID/F5WGqczNr0L7vEf+pOsRAn0F6EV+o/nyb3ePt8rLhE/wjHpPg== - -"@swc/core-win32-ia32-msvc@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.6.13.tgz#047302065096883f52b90052d93f9c7e63cdc67b" - integrity sha512-IJ8KH4yIUHTnS/U1jwQmtbfQals7zWPG0a9hbEfIr4zI0yKzjd83lmtS09lm2Q24QBWOCFGEEbuZxR4tIlvfzA== - -"@swc/core-win32-x64-msvc@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.6.13.tgz#efd9706c38aa7dc3515acfa823b8ffa9f4a3c1a6" - integrity sha512-f6/sx6LMuEnbuxtiSL/EkR0Y6qUHFw1XVrh6rwzKXptTipUdOY+nXpKoh+1UsBm/r7H0/5DtOdrn3q5ZHbFZjQ== - -"@swc/core@^1.3.36": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.6.13.tgz#a583f614203d2350e6bb7f7c3c9c36c0e6f2a1da" - integrity sha512-eailUYex6fkfaQTev4Oa3mwn0/e3mQU4H8y1WPuImYQESOQDtVrowwUGDSc19evpBbHpKtwM+hw8nLlhIsF+Tw== - dependencies: - "@swc/counter" "^0.1.3" - "@swc/types" "^0.1.9" - optionalDependencies: - "@swc/core-darwin-arm64" "1.6.13" - "@swc/core-darwin-x64" "1.6.13" - "@swc/core-linux-arm-gnueabihf" "1.6.13" - "@swc/core-linux-arm64-gnu" "1.6.13" - "@swc/core-linux-arm64-musl" "1.6.13" - "@swc/core-linux-x64-gnu" "1.6.13" - "@swc/core-linux-x64-musl" "1.6.13" - "@swc/core-win32-arm64-msvc" "1.6.13" - "@swc/core-win32-ia32-msvc" "1.6.13" - "@swc/core-win32-x64-msvc" "1.6.13" - -"@swc/counter@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" - integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== - -"@swc/helpers@0.4.14": - version "0.4.14" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74" - integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw== - dependencies: - tslib "^2.4.0" - -"@swc/helpers@^0.5.0": - version "0.5.11" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7" - integrity sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A== - dependencies: - tslib "^2.4.0" - -"@swc/types@^0.1.9": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.9.tgz#e67cdcc2e4dd74a3cef4474b465eb398e7ae83e2" - integrity sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg== - dependencies: - "@swc/counter" "^0.1.3" - -"@tanstack/query-core@5.24.8": - version "5.24.8" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.24.8.tgz#b407546a726ecd4d60b8682dec2ca84ac9eab81e" - integrity sha512-yH7KnfXMf10p1U5GffTQzFi2Miiw6WJZImGYGdV7eqa5ZbKO8qVx9lOA9SfhIaJXomrMp1Yz5w/CBhVM3yWeTA== - -"@tanstack/react-query@5.24.8": - version "5.24.8" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.24.8.tgz#9de1423a710bcdfce90df82acaf494659edb6221" - integrity sha512-jB3JS9SzDmBySk9VVOTPt/0ixWEb3K3dy9IExlVl/1NouY3N7HzAqG/1d4m6E9eFfKJoLvA/hBksaLu0lw627A== - dependencies: - "@tanstack/query-core" "5.24.8" - -"@testing-library/dom@^8.5.0": - version "8.20.1" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f" - integrity sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - aria-query "5.1.3" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.5.0" - pretty-format "^27.0.2" - -"@testing-library/jest-dom@5.16.1": - version "5.16.1" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.1.tgz#3db7df5ae97596264a7da9696fe14695ba02e51f" - integrity sha512-ajUJdfDIuTCadB79ukO+0l8O+QwN0LiSxDaYUTI4LndbbUsGi6rWU1SCexXzBA2NSjlVB9/vbkasQIL3tmPBjw== - dependencies: - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^5.0.0" - chalk "^3.0.0" - css "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" - -"@testing-library/react-hooks@7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz#3388d07f562d91e7f2431a4a21b5186062ecfee0" - integrity sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg== - dependencies: - "@babel/runtime" "^7.12.5" - "@types/react" ">=16.9.0" - "@types/react-dom" ">=16.9.0" - "@types/react-test-renderer" ">=16.9.0" - react-error-boundary "^3.1.0" - -"@testing-library/react@13.4.0": - version "13.4.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" - integrity sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^8.5.0" - "@types/react-dom" "^18.0.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@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== - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@ts-morph/common@~0.12.3": - version "0.12.3" - resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.12.3.tgz#a96e250217cd30e480ab22ec6a0ebbe65fd784ff" - integrity sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w== - dependencies: - fast-glob "^3.2.7" - minimatch "^3.0.4" - mkdirp "^1.0.4" - path-browserify "^1.0.1" - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@tufjs/canonical-json@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" - integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== - -"@tufjs/models@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" - integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== - dependencies: - "@tufjs/canonical-json" "1.0.0" - minimatch "^9.0.0" - -"@types/aria-query@^5.0.1": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" - integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== - dependencies: - "@babel/types" "^7.20.7" - -"@types/big.js@6.2.2": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.2.2.tgz#69422ec9ef59df1330ccfde2106d9e1159a083c3" - integrity sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA== - -"@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - version "3.5.13" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" - integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== - dependencies: - "@types/node" "*" - -"@types/connect-history-api-fallback@^1.3.5": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" - integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/debug@^4.1.7": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== - dependencies: - "@types/ms" "*" - -"@types/dns-packet@^5.6.5": - version "5.6.5" - resolved "https://registry.yarnpkg.com/@types/dns-packet/-/dns-packet-5.6.5.tgz#49fc29a40f5d30227ed028fa1ee82601d3745e15" - integrity sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q== - dependencies: - "@types/node" "*" - -"@types/dom-screen-wake-lock@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/dom-screen-wake-lock/-/dom-screen-wake-lock-1.0.3.tgz#c3588a5f6f40fae957f9ce5be9bc4927a61bb9a0" - integrity sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw== - -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.56.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" - integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - -"@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.19.5" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" - integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@*", "@types/express@^4.17.13": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/fs-extra@^8.0.1": - version "8.1.5" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.5.tgz#33aae2962d3b3ec9219b5aca2555ee00274f5927" - integrity sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ== - dependencies: - "@types/node" "*" - -"@types/gh-pages@6.1.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/gh-pages/-/gh-pages-6.1.0.tgz#63c33b489f3a7618b136897ffb007076b47fe0b7" - integrity sha512-Ma9bmKkE+WUtywENLC1rSLXTW66cJHJMWX2RQrJTMKhYM8o+73bRJ1ebfo3RWXUcG+HW3khky2nhVaN7nCsa3Q== - -"@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/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/http-proxy@^1.17.8": - version "1.17.14" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" - integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@*": - version "29.5.12" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/jest@29.4.4": - version "29.4.4" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.4.tgz#ba257bd7b1876dec9e0b4fb82fa60eec5505e5f1" - integrity sha512-qezb65VIH7X1wobSnd6Lvdve7PXSyQRa3dljTkhTtDhi603RvHQCshSlJcuyMLHJpeHgY3NKwvDJWxMOOHxGDQ== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/jsdom@^20.0.0": - version "20.0.1" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" - integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== - dependencies: - "@types/node" "*" - "@types/tough-cookie" "*" - parse5 "^7.0.0" - -"@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@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/linkify-it@*": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" - integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== - -"@types/markdown-it@^12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" - integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== - dependencies: - "@types/linkify-it" "*" - "@types/mdurl" "*" - -"@types/mdurl@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" - integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - -"@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/minimatch@^3.0.4": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/minimist@^1.2.0": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" - integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== - -"@types/ms@*": - version "0.7.34" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" - integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== - -"@types/node-forge@^1.3.0": - version "1.3.11" - resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" - integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== - dependencies: - "@types/node" "*" - -"@types/node@*": - version "20.14.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.10.tgz#a1a218290f1b6428682e3af044785e5874db469a" - integrity sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ== - dependencies: - undici-types "~5.26.4" - -"@types/node@11.11.6": - version "11.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" - integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== - -"@types/node@18.11.9": - version "18.11.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" - integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== - -"@types/node@>=13.7.0": - version "20.14.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.11.tgz#09b300423343460455043ddd4d0ded6ac579b74b" - integrity sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA== - dependencies: - undici-types "~5.26.4" - -"@types/node@^14.14.31": - version "14.18.63" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" - integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== - -"@types/node@^18.0.0": - version "18.19.40" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.40.tgz#e9213ba98122992dafd8d55a2196f2ebb56b2555" - integrity sha512-MIxieZHrm4Ee8XArBIc+Or9HINt2StOmCbgRcXGSJl8q14svRvkZPe7LJq9HKtTI1SK3wU8b91TjntUm7T69Pg== - dependencies: - undici-types "~5.26.4" - -"@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.1": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - -"@types/parse-json@^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" - integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== - -"@types/prop-types@*": - version "15.7.12" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" - integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== - -"@types/qrcode@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.5.5.tgz#993ff7c6b584277eee7aac0a20861eab682f9dac" - integrity sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg== - dependencies: - "@types/node" "*" - -"@types/qs@*": - version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" - integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - -"@types/react-dom@18.0.9": - version "18.0.9" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.9.tgz#ffee5e4bfc2a2f8774b15496474f8e7fe8d0b504" - integrity sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg== - dependencies: - "@types/react" "*" - -"@types/react-dom@>=16.9.0", "@types/react-dom@^18.0.0": - version "18.3.0" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" - integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== - dependencies: - "@types/react" "*" - -"@types/react-test-renderer@>=16.9.0": - version "18.3.0" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.3.0.tgz#839502eae70058a4ae161f63385a8e7929cef4c0" - integrity sha512-HW4MuEYxfDbOHQsVlY/XtOvNHftCVEPhJF2pQXXwcUiUF+Oyb0usgp48HSgpK5rt8m9KZb22yqOeZm+rrVG8gw== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@>=16.9.0": - version "18.3.3" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" - integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/react@18.0.25": - version "18.0.25" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.25.tgz#8b1dcd7e56fe7315535a4af25435e0bb55c8ae44" - integrity sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/regenerator-runtime@0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@types/regenerator-runtime/-/regenerator-runtime-0.13.1.tgz#1285f0b1b0508e0ead609104b9a42409473122d1" - integrity sha512-Wr4Kopo+zs7kl1mxveVrP7Hl5nEzauQKdSNFN5Eg27Ze11MAgJYKgidYc9AAkQzGXXWH9lqVzPbXUGH6M8VY6g== - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/scheduler@*": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.23.0.tgz#0a6655b3e2708eaabca00b7372fafd7a792a7b09" - integrity sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw== - -"@types/secp256k1@^4.0.4": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" - integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ== - dependencies: - "@types/node" "*" - -"@types/semver@^7.3.12": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-index@^1.9.1": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" - integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== - dependencies: - "@types/express" "*" - -"@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" - integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/send" "*" - -"@types/sinonjs__fake-timers@8.1.1": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" - integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== - -"@types/sizzle@^2.3.2": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627" - integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg== - -"@types/sockjs@^0.3.33": - version "0.3.36" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" - integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== - dependencies: - "@types/node" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/testing-library__jest-dom@^5.9.1": - version "5.14.9" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz#0fb1e6a0278d87b6737db55af5967570b67cb466" - integrity sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw== - dependencies: - "@types/jest" "*" - -"@types/tough-cookie@*": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" - integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== - -"@types/trusted-types@^2.0.2": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" - integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== - -"@types/ua-parser-js@^0.7.36": - version "0.7.39" - resolved "https://registry.yarnpkg.com/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz#832c58e460c9435e4e34bb866e85e9146e12cdbb" - integrity sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg== - -"@types/w3c-web-hid@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/w3c-web-hid/-/w3c-web-hid-1.0.3.tgz#e08587a7d737f8654ea6bc0a88689ce5d3ce2d19" - integrity sha512-eTQRkPd2JukZfS9+kRtrBAaTCCb6waGh5X8BJHmH1MiVQPLMYwm4+EvhwFfOo9SDna15o9dFAwmWwN6r/YM53A== - -"@types/w3c-web-usb@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/w3c-web-usb/-/w3c-web-usb-1.0.6.tgz#5d8560d0d9f585ffc80865bc773db7bc975b680c" - integrity sha512-cSjhgrr8g4KbPnnijAr/KJDNKa/bBa+ixYkywFRvrhvi9n1WEl7yYbtRyzE6jqNQiSxxJxoAW3STaOQwJHndaw== - -"@types/ws@^8.5.1", "@types/ws@^8.5.5": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@types/yauzl@^2.9.1": - version "2.10.3" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" - integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@5.58.0": - version "5.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz#b1d4b0ad20243269d020ef9bbb036a40b0849829" - integrity sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.58.0" - "@typescript-eslint/type-utils" "5.58.0" - "@typescript-eslint/utils" "5.58.0" - debug "^4.3.4" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@5.58.0": - version "5.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.58.0.tgz#2ac4464cf48bef2e3234cb178ede5af352dddbc6" - integrity sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ== - dependencies: - "@typescript-eslint/scope-manager" "5.58.0" - "@typescript-eslint/types" "5.58.0" - "@typescript-eslint/typescript-estree" "5.58.0" - debug "^4.3.4" - -"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.2.0.tgz#44356312aea8852a3a82deebdacd52ba614ec07a" - integrity sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg== - dependencies: - "@typescript-eslint/scope-manager" "7.2.0" - "@typescript-eslint/types" "7.2.0" - "@typescript-eslint/typescript-estree" "7.2.0" - "@typescript-eslint/visitor-keys" "7.2.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz#566e46303392014d5d163704724872e1f2dd3c15" - integrity sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw== - dependencies: - "@typescript-eslint/types" "5.43.0" - "@typescript-eslint/visitor-keys" "5.43.0" - -"@typescript-eslint/scope-manager@5.58.0": - version "5.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz#5e023a48352afc6a87be6ce3c8e763bc9e2f0bc8" - integrity sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA== - dependencies: - "@typescript-eslint/types" "5.58.0" - "@typescript-eslint/visitor-keys" "5.58.0" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz#cfb437b09a84f95a0930a76b066e89e35d94e3da" - integrity sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg== - dependencies: - "@typescript-eslint/types" "7.2.0" - "@typescript-eslint/visitor-keys" "7.2.0" - -"@typescript-eslint/type-utils@5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz#91110fb827df5161209ecca06f70d19a96030be6" - integrity sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg== - dependencies: - "@typescript-eslint/typescript-estree" "5.43.0" - "@typescript-eslint/utils" "5.43.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/type-utils@5.58.0": - version "5.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz#f7d5b3971483d4015a470d8a9e5b8a7d10066e52" - integrity sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w== - dependencies: - "@typescript-eslint/typescript-estree" "5.58.0" - "@typescript-eslint/utils" "5.58.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/type-utils@^5.36.1": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== - dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.43.0.tgz#e4ddd7846fcbc074325293515fa98e844d8d2578" - integrity sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg== - -"@typescript-eslint/types@5.58.0": - version "5.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.58.0.tgz#54c490b8522c18986004df7674c644ffe2ed77d8" - integrity sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g== - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f" - integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA== - -"@typescript-eslint/typescript-estree@5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz#b6883e58ba236a602c334be116bfc00b58b3b9f2" - integrity sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg== - dependencies: - "@typescript-eslint/types" "5.43.0" - "@typescript-eslint/visitor-keys" "5.43.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@5.58.0": - version "5.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz#4966e6ff57eaf6e0fce2586497edc097e2ab3e61" - integrity sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q== - dependencies: - "@typescript-eslint/types" "5.58.0" - "@typescript-eslint/visitor-keys" "5.58.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz#5beda2876c4137f8440c5a84b4f0370828682556" - integrity sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA== - dependencies: - "@typescript-eslint/types" "7.2.0" - "@typescript-eslint/visitor-keys" "7.2.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.43.0.tgz#00fdeea07811dbdf68774a6f6eacfee17fcc669f" - integrity sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A== - dependencies: - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.43.0" - "@typescript-eslint/types" "5.43.0" - "@typescript-eslint/typescript-estree" "5.43.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - semver "^7.3.7" - -"@typescript-eslint/utils@5.58.0": - version "5.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.58.0.tgz#430d7c95f23ec457b05be5520c1700a0dfd559d5" - integrity sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.58.0" - "@typescript-eslint/types" "5.58.0" - "@typescript-eslint/typescript-estree" "5.58.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz#cbbdadfdfea385310a20a962afda728ea106befa" - integrity sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg== - dependencies: - "@typescript-eslint/types" "5.43.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@5.58.0": - version "5.58.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz#eb9de3a61d2331829e6761ce7fd13061781168b4" - integrity sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA== - dependencies: - "@typescript-eslint/types" "5.58.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz#5035f177752538a5750cca1af6044b633610bf9e" - integrity sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A== - dependencies: - "@typescript-eslint/types" "7.2.0" - eslint-visitor-keys "^3.4.1" - -"@vitejs/plugin-basic-ssl@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz#48c46eab21e0730921986ce742563ae83fe7fe34" - integrity sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A== - -"@wagmi/connectors@5.0.21": - version "5.0.21" - resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.0.21.tgz#0fee2d59c764e69804067aa0cb60650fbe6c7227" - integrity sha512-lbjXEv6HhOa9nXZ5r6NGFJdaadCt2Yj9hSWHjKuiTobrE6dEGQqG16mCQS17yXcvXpI62Q/sW6SL347JrBju/Q== - dependencies: - "@coinbase/wallet-sdk" "4.0.4" - "@metamask/sdk" "0.26.4" - "@safe-global/safe-apps-provider" "0.18.1" - "@safe-global/safe-apps-sdk" "8.1.0" - "@walletconnect/ethereum-provider" "2.13.0" - "@walletconnect/modal" "2.6.2" - cbw-sdk "npm:@coinbase/wallet-sdk@3.9.3" - -"@wagmi/core@2.11.6": - version "2.11.6" - resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.11.6.tgz#bfb592e76fe5c863e4faec545874abdc4df00fe8" - integrity sha512-Ohk7Bh+Q8kjzxEHImIq98CnPduz8n1a5bdwJi6F7zU3h62crhlVq7fZBYoBhoDgmX0ROVOMr8WW3XU3XhRwUOw== - dependencies: - eventemitter3 "5.0.1" - mipd "0.0.5" - zustand "4.4.1" - -"@walletconnect/core@2.13.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.13.0.tgz#6b79b039930643e8ee85a0f512b143a35fdb8b52" - integrity sha512-blDuZxQenjeXcVJvHxPznTNl6c/2DO4VNrFnus+qHmO6OtT5lZRowdMtlCaCNb1q0OxzgrmBDcTOCbFcCpio/g== - dependencies: - "@walletconnect/heartbeat" "1.2.2" - "@walletconnect/jsonrpc-provider" "1.0.14" - "@walletconnect/jsonrpc-types" "1.0.4" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/jsonrpc-ws-connection" "1.0.14" - "@walletconnect/keyvaluestorage" "1.1.1" - "@walletconnect/logger" "2.1.2" - "@walletconnect/relay-api" "1.0.10" - "@walletconnect/relay-auth" "1.0.4" - "@walletconnect/safe-json" "1.0.2" - "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.13.0" - "@walletconnect/utils" "2.13.0" - events "3.3.0" - isomorphic-unfetch "3.1.0" - lodash.isequal "4.5.0" - uint8arrays "3.1.0" - -"@walletconnect/environment@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" - integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg== - dependencies: - tslib "1.14.1" - -"@walletconnect/ethereum-provider@2.13.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.13.0.tgz#5148851983e0d55fa1c18737b2db22802c82434c" - integrity sha512-dnpW8mmLpWl1AZUYGYZpaAfGw1HFkL0WSlhk5xekx3IJJKn4pLacX2QeIOo0iNkzNQxZfux1AK4Grl1DvtzZEA== - dependencies: - "@walletconnect/jsonrpc-http-connection" "1.0.8" - "@walletconnect/jsonrpc-provider" "1.0.14" - "@walletconnect/jsonrpc-types" "1.0.4" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/modal" "2.6.2" - "@walletconnect/sign-client" "2.13.0" - "@walletconnect/types" "2.13.0" - "@walletconnect/universal-provider" "2.13.0" - "@walletconnect/utils" "2.13.0" - events "3.3.0" - -"@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" - integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== - dependencies: - keyvaluestorage-interface "^1.0.0" - tslib "1.14.1" - -"@walletconnect/heartbeat@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" - integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/time" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/heartbeat@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz#e8dc5179db7769950c6f9cf59b23516d9b95227d" - integrity sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/time" "^1.0.2" - events "^3.3.0" - -"@walletconnect/jsonrpc-http-connection@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz#2f4c3948f074960a3edd07909560f3be13e2c7ae" - integrity sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" - "@walletconnect/safe-json" "^1.0.1" - cross-fetch "^3.1.4" - events "^3.3.0" - -"@walletconnect/jsonrpc-provider@1.0.14": - version "1.0.14" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz#696f3e3b6d728b361f2e8b853cfc6afbdf2e4e3e" - integrity sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.8" - "@walletconnect/safe-json" "^1.0.2" - events "^3.3.0" - -"@walletconnect/jsonrpc-types@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" - integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== - dependencies: - keyvaluestorage-interface "^1.0.0" - tslib "1.14.1" - -"@walletconnect/jsonrpc-types@1.0.4", "@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz#ce1a667d79eadf2a2d9d002c152ceb68739c230c" - integrity sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ== - dependencies: - events "^3.3.0" - keyvaluestorage-interface "^1.0.0" - -"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" - integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== - dependencies: - "@walletconnect/environment" "^1.0.1" - "@walletconnect/jsonrpc-types" "^1.0.3" - tslib "1.14.1" - -"@walletconnect/jsonrpc-ws-connection@1.0.14": - version "1.0.14" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" - integrity sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" - "@walletconnect/safe-json" "^1.0.2" - events "^3.3.0" - ws "^7.5.1" - -"@walletconnect/keyvaluestorage@1.1.1", "@walletconnect/keyvaluestorage@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" - integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== - dependencies: - "@walletconnect/safe-json" "^1.0.1" - idb-keyval "^6.2.1" - unstorage "^1.9.0" - -"@walletconnect/logger@2.1.2", "@walletconnect/logger@^2.0.1": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.1.2.tgz#813c9af61b96323a99f16c10089bfeb525e2a272" - integrity sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw== - dependencies: - "@walletconnect/safe-json" "^1.0.2" - pino "7.11.0" - -"@walletconnect/modal-core@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" - integrity sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA== - dependencies: - valtio "1.11.2" - -"@walletconnect/modal-ui@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" - integrity sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA== - dependencies: - "@walletconnect/modal-core" "2.6.2" - lit "2.8.0" - motion "10.16.2" - qrcode "1.5.3" - -"@walletconnect/modal@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" - integrity sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA== - dependencies: - "@walletconnect/modal-core" "2.6.2" - "@walletconnect/modal-ui" "2.6.2" - -"@walletconnect/relay-api@1.0.10", "@walletconnect/relay-api@^1.0.9": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.10.tgz#5aef3cd07c21582b968136179aa75849dcc65499" - integrity sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw== - dependencies: - "@walletconnect/jsonrpc-types" "^1.0.2" - -"@walletconnect/relay-auth@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" - integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== - dependencies: - "@stablelib/ed25519" "^1.0.2" - "@stablelib/random" "^1.0.1" - "@walletconnect/safe-json" "^1.0.1" - "@walletconnect/time" "^1.0.2" - tslib "1.14.1" - uint8arrays "^3.0.0" - -"@walletconnect/safe-json@1.0.2", "@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" - integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== - dependencies: - tslib "1.14.1" - -"@walletconnect/sign-client@2.13.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.13.0.tgz#f59993f082aec1ca5498b9519027e764c1e6d28b" - integrity sha512-En7KSvNUlQFx20IsYGsFgkNJ2lpvDvRsSFOT5PTdGskwCkUfOpB33SQJ6nCrN19gyoKPNvWg80Cy6MJI0TjNYA== - dependencies: - "@walletconnect/core" "2.13.0" - "@walletconnect/events" "1.0.1" - "@walletconnect/heartbeat" "1.2.2" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "2.1.2" - "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.13.0" - "@walletconnect/utils" "2.13.0" - events "3.3.0" - -"@walletconnect/time@1.0.2", "@walletconnect/time@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" - integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== - dependencies: - tslib "1.14.1" - -"@walletconnect/types@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.12.0.tgz#83e1057c795d41afaeecad3a2776aaa4ba12f5d6" - integrity sha512-uhB3waGmujQVJcPgJvGOpB8RalgYSBT+HpmVbfl4Qe0xJyqpRUo4bPjQa0UYkrHaW20xIw94OuP4+FMLYdeemg== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/keyvaluestorage" "^1.1.1" - "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - -"@walletconnect/types@2.13.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.13.0.tgz#cdac083651f5897084fe9ed62779f11810335ac6" - integrity sha512-MWaVT0FkZwzYbD3tvk8F+2qpPlz1LUSWHuqbINUtMXnSzJtXN49Y99fR7FuBhNFtDalfuWsEK17GrNA+KnAsPQ== - dependencies: - "@walletconnect/events" "1.0.1" - "@walletconnect/heartbeat" "1.2.2" - "@walletconnect/jsonrpc-types" "1.0.4" - "@walletconnect/keyvaluestorage" "1.1.1" - "@walletconnect/logger" "2.1.2" - events "3.3.0" - -"@walletconnect/universal-provider@2.13.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.13.0.tgz#f2b597001245e4d4a06d96dd1bce8d3a8a4dcbbf" - integrity sha512-B5QvO8pnk5Bqn4aIt0OukGEQn2Auk9VbHfhQb9cGwgmSCd1GlprX/Qblu4gyT5+TjHMb1Gz5UssUaZWTWbDhBg== - dependencies: - "@walletconnect/jsonrpc-http-connection" "1.0.8" - "@walletconnect/jsonrpc-provider" "1.0.14" - "@walletconnect/jsonrpc-types" "1.0.4" - "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "2.1.2" - "@walletconnect/sign-client" "2.13.0" - "@walletconnect/types" "2.13.0" - "@walletconnect/utils" "2.13.0" - events "3.3.0" - -"@walletconnect/utils@2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.12.0.tgz#0a48f114d9c344d390730782d0d7a365814371bf" - integrity sha512-GIpfHUe1Bjp1Tjda0SkJEizKOT2biuv7VPFnKsOLT1T+8QxEP9NruC+K2UUEvijS1Qr/LKH9P5004RYNgrch+w== - dependencies: - "@stablelib/chacha20poly1305" "1.0.1" - "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "^1.0.3" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.12.0" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" - detect-browser "5.3.0" - query-string "7.1.3" - uint8arrays "^3.1.0" - -"@walletconnect/utils@2.13.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.13.0.tgz#1fc1fbff0d26db0830e65d1ba8cfe1a13a0616ad" - integrity sha512-q1eDCsRHj5iLe7fF8RroGoPZpdo2CYMZzQSrw1iqL+2+GOeqapxxuJ1vaJkmDUkwgklfB22ufqG6KQnz78sD4w== - dependencies: - "@stablelib/chacha20poly1305" "1.0.1" - "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "1.0.2" - "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "1.0.3" - "@walletconnect/relay-api" "1.0.10" - "@walletconnect/safe-json" "1.0.2" - "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.13.0" - "@walletconnect/window-getters" "1.0.1" - "@walletconnect/window-metadata" "1.0.1" - detect-browser "5.3.0" - query-string "7.1.3" - uint8arrays "3.1.0" - -"@walletconnect/window-getters@1.0.1", "@walletconnect/window-getters@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" - integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== - dependencies: - tslib "1.14.1" - -"@walletconnect/window-metadata@1.0.1", "@walletconnect/window-metadata@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" - integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== - dependencies: - "@walletconnect/window-getters" "^1.0.1" - tslib "1.14.1" - -"@web3modal/common@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/common/-/common-5.0.6.tgz#f575ae34c59298029053c59c3a9b2ee7282686b2" - integrity sha512-VRLjA8FvHsnA3s0B+7ZbiXE5scQAZE7100RbbrjTjyJbseiU/W9gGoGcKW2NyBmfBrGQY3SXs62CCqcVQNMT4A== - dependencies: - bignumber.js "9.1.2" - dayjs "1.11.10" - -"@web3modal/core@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-5.0.6.tgz#e3c89f10ef15e35a8266ce3aa706292ce89656ea" - integrity sha512-C3g2V/fYfV34mmn/h7YFsi8VSFXnaj508pHps0H3t/9UrKsEdvbl91rvxbWg7tulh4ZtMK4SOJVmuoEgbzGcaw== - dependencies: - "@web3modal/common" "5.0.6" - "@web3modal/wallet" "5.0.6" - valtio "1.11.2" - -"@web3modal/polyfills@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/polyfills/-/polyfills-5.0.6.tgz#1866e354b2abbfa4d5d9c63ccb349f3cbbb5320a" - integrity sha512-nisOsY9s0eU5ljYw8xIhrSDnMJAncB2bUIRwXYQGrI5Ly+jVd3XeINDtsOAsFVRz08+IC+H1eFt8DZEV1rKpFQ== - dependencies: - buffer "6.0.3" - -"@web3modal/scaffold-react@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/scaffold-react/-/scaffold-react-5.0.6.tgz#b47b4a0cb9086abbf99de7e2cff6ec3d70555a7c" - integrity sha512-6hcJSOQrBTe9Cgz7GEldcggWUKoWpLHf6bKieW0xAcfRWZUEU3jPJz79Y/zj7jNf+Z8lvARPP8qPmyB8uI0upg== - dependencies: - "@web3modal/scaffold" "5.0.6" - -"@web3modal/scaffold-ui@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/scaffold-ui/-/scaffold-ui-5.0.6.tgz#d165423d9f11a002ac510f65dec419c6808de2b2" - integrity sha512-U5NK+CML+e88cLcUUPBydI9o7kPxbhHL+JNPwxXWyCHfGFPuSYesuxKQKTp4ZL5wZ6FUI1RbgwDT9CX65+D4Qw== - dependencies: - "@web3modal/common" "5.0.6" - "@web3modal/core" "5.0.6" - "@web3modal/scaffold-utils" "5.0.6" - "@web3modal/siwe" "5.0.6" - "@web3modal/ui" "5.0.6" - "@web3modal/wallet" "5.0.6" - lit "3.1.0" - -"@web3modal/scaffold-utils@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/scaffold-utils/-/scaffold-utils-5.0.6.tgz#7dd234a9f08b5e73afd21ef57cdd9087e08830b2" - integrity sha512-/yNwlo/SlvY0Vi3kr/qoUCdhz978A7XlUqdcnk4mdEBFs0X0BzJbdfQ75xuKHXD+1ZU38HTV3lRH/XAbxbT5IA== - dependencies: - "@web3modal/core" "5.0.6" - "@web3modal/polyfills" "5.0.6" - valtio "1.11.2" - -"@web3modal/scaffold-vue@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/scaffold-vue/-/scaffold-vue-5.0.6.tgz#49b552600755cc532c4648d6ce0b1120fc66ece4" - integrity sha512-uannt8oVKjBFDXSY4wcAgK7oRyMOU/BLPA9duxYbVXcCTYeJSfv9v6/70Xb/CA0oIIW4MH2neqbbwzYGSTx1Eg== - dependencies: - "@web3modal/scaffold" "5.0.6" - -"@web3modal/scaffold@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/scaffold/-/scaffold-5.0.6.tgz#90367c53b2056fcafb8fdaa50f62bc5c4204b7ba" - integrity sha512-KqcFJH5V8pMh4OHLV7dsTZTCNXUjsB7EKPEPpyq9bru60fiCz5PniS6nWRrZEmS7+BMNDr3cv/SVvg3+Rrvl+g== - dependencies: - "@web3modal/common" "5.0.6" - "@web3modal/core" "5.0.6" - "@web3modal/scaffold-ui" "5.0.6" - "@web3modal/scaffold-utils" "5.0.6" - "@web3modal/siwe" "5.0.6" - "@web3modal/ui" "5.0.6" - "@web3modal/wallet" "5.0.6" - lit "3.1.0" - -"@web3modal/siwe@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/siwe/-/siwe-5.0.6.tgz#77fc78c42b8752d59bcb82ee0b081e920a2708cb" - integrity sha512-2Z4Ho4aysguZIUSgiA+MkQiK4fL2QwTI2m3WI/BmbwNf7BpMWGKawO4dhzNtpLGUU2BeEPXYfLG9XhxOFllRUQ== - dependencies: - "@walletconnect/utils" "2.12.0" - "@web3modal/core" "5.0.6" - "@web3modal/scaffold-utils" "5.0.6" - lit "3.1.0" - valtio "1.11.2" - -"@web3modal/ui@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-5.0.6.tgz#440b24a83760138b9c75bda15050f7180b73735d" - integrity sha512-Rywu2V2p8RFo3mLLcnaqyJMVPH176qii4IxIs+wuNh49KNqWvCaJ0gp/k54X3xt+yyi3VH3pnsS9EG7wPGm+7Q== - dependencies: - lit "3.1.0" - qrcode "1.5.3" - -"@web3modal/wagmi@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/wagmi/-/wagmi-5.0.6.tgz#24cc1e19169fe724cbc98945de7cb3f1358484b4" - integrity sha512-ZS898MQN/w4nWe9q7F65vMO7TbJAJA3/Bz9NyLkDEJUvzdG1JWRggs5g8U0ZjlpfTbKKV2masgh9GnOrzjI+GQ== - dependencies: - "@walletconnect/ethereum-provider" "2.13.0" - "@web3modal/polyfills" "5.0.6" - "@web3modal/scaffold" "5.0.6" - "@web3modal/scaffold-react" "5.0.6" - "@web3modal/scaffold-utils" "5.0.6" - "@web3modal/scaffold-vue" "5.0.6" - "@web3modal/siwe" "5.0.6" - -"@web3modal/wallet@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@web3modal/wallet/-/wallet-5.0.6.tgz#7f8d14740f190ddda10dc19354b89d21e8b7889e" - integrity sha512-kJbp8cYHgvHc2t/lRESFrVyE8nC5jFwv1X7xpkDSrRJP+461D9UsKFWiQHW1MzDy30+D7HOaMQso/EPt8H1p0A== - dependencies: - "@walletconnect/logger" "2.1.2" - "@web3modal/polyfills" "5.0.6" - zod "3.22.4" - -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/ast@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== - -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" - integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== - -"@webpack-cli/info@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" - integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== - -"@webpack-cli/serve@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" - integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -"@yarnpkg/lockfile@1.1.0", "@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - -"@yarnpkg/parsers@^3.0.0-rc.18": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" - integrity sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== - dependencies: - js-yaml "^3.10.0" - tslib "^2.4.0" - -"@zkochan/js-yaml@0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" - integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== - dependencies: - argparse "^2.0.1" - -JSONStream@^1.0.4, JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abab@^2.0.5, abab@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -abbrev@^1.0.0, abbrev@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abitype@0.9.8: - version "0.9.8" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.9.8.tgz#1f120b6b717459deafd213dfbf3a3dd1bf10ae8c" - integrity sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ== - -abitype@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.4.tgz#a817ff44860e8a84e9a37ed22aa9b738dbb51dba" - integrity sha512-UivtYZOGJGE8rsrM/N5vdRkUpqEZVmuTumfTuolm7m/6O09wprd958rx8kUBwVAAAhQDveGAgD0GJdBuR8s6tw== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -abortcontroller-polyfill@^1.1.9: - version "1.7.5" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" - integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== - -abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1: - version "0.12.4" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz#29e18e632e60e4e221d5810247852a63d7b2e410" - integrity sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA== - dependencies: - xtend "~3.0.0" - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" - integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== - dependencies: - acorn "^8.1.0" - acorn-walk "^8.0.2" - -acorn-import-assertions@^1.7.6, acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn-import-attributes@^1.9.5: - version "1.9.5" - resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" - integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== - -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-walk@^8.0.2, acorn-walk@^8.1.1: - version "8.3.3" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" - integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== - dependencies: - acorn "^8.11.0" - -acorn@^8.1.0, acorn@^8.11.0, acorn@^8.11.3, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.12.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== - -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== - -address@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== - -adjust-sourcemap-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" - integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== - dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -agent-base@6, agent-base@^6.0.2: - 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" - -agent-base@^7.0.2, agent-base@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" - -agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" - integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== - dependencies: - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@2.1.1, ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@8.12.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: - 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" - -ajv@^8.0.0, ajv@^8.9.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -ansi-colors@4.1.3, ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: - 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-escapes@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.1.tgz#76c54ce9b081dad39acec4b5d53377913825fb0f" - integrity sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig== - -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -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-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -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, ansi-styles@^4.3.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-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== - -any-signal@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" - integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== - -anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -arch@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -archy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== - -are-we-there-yet@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" - integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -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== - -argv-formatter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/argv-formatter/-/argv-formatter-1.0.0.tgz#a0ca0cbc29a5b73e836eebe1cbf6c5e0e4eb82f9" - integrity sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw== - -aria-query@5.1.3, aria-query@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - -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" - -aria-query@^5.0.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - -array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== - dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== - -array-includes@^3.1.4, array-includes@^3.1.5, array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== - dependencies: - array-uniq "^1.0.1" - -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-union@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" - integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - -array.prototype.findlast@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" - integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" - -array.prototype.findlastindex@^1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" - -array.prototype.flat@^1.2.5, array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.toreversed@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" - integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.1, array.prototype.tosorted@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" - integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.3" - es-errors "^1.3.0" - es-shim-unscopables "^1.0.2" - -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.2.1" - get-intrinsic "^1.2.3" - is-array-buffer "^3.0.4" - is-shared-array-buffer "^1.0.2" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -asn1.js@^4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -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== - -ast-types-flow@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" - integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== - -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-mutex@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" - integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== - dependencies: - tslib "^2.0.0" - -async@^2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - -async@^3.2.0, async@^3.2.3, async@^3.2.4: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -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== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -atomic-sleep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== - -autoprefixer@10.4.14: - version "10.4.14" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" - integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== - dependencies: - browserslist "^4.21.5" - caniuse-lite "^1.0.30001464" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -autoprefixer@^10.4.9: - version "10.4.19" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" - integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== - dependencies: - browserslist "^4.23.0" - caniuse-lite "^1.0.30001599" - fraction.js "^4.3.7" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -await-to-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/await-to-js/-/await-to-js-3.0.0.tgz#70929994185616f4675a91af6167eb61cc92868f" - integrity sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g== - -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.13.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.0.tgz#d9b802e9bb9c248d7be5f7f5ef178dc3684e9dcc" - integrity sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g== - -axe-core@^4.4.3, axe-core@^4.9.1: - version "4.9.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.9.1.tgz#fcd0f4496dad09e0c899b44f6c4bb7848da912ae" - integrity sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw== - -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" - -axios@^1.0.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" - integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axobject-query@3.1.1, axobject-query@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" - integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== - dependencies: - deep-equal "^2.0.5" - -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-jest@29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.4.3.tgz#478b84d430972b277ad67dd631be94abea676792" - integrity sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw== - dependencies: - "@jest/transform" "^29.4.3" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.4.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-loader@9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.2.tgz#a16a080de52d08854ee14570469905a5fc00d39c" - integrity sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA== - dependencies: - find-cache-dir "^3.3.2" - schema-utils "^4.0.0" - -babel-loader@^9.1.2: - version "9.1.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - -babel-plugin-const-enum@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz#3d25524106f68f081e187829ba736b251c289861" - integrity sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.3.3" - "@babel/traverse" "^7.16.0" - -babel-plugin-istanbul@6.1.1, babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-polyfill-corejs2@^0.4.10, babel-plugin-polyfill-corejs2@^0.4.3: - version "0.4.11" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" - integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.2" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" - integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.1" - -babel-plugin-polyfill-corejs3@^0.8.1: - version "0.8.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz#941855aa7fdaac06ed24c730a93450d2b2b76d04" - integrity sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.4" - core-js-compat "^3.33.1" - -babel-plugin-polyfill-regenerator@^0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" - integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.5.0" - -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" - integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" - -babel-plugin-transform-async-to-promises@^0.8.15: - version "0.8.18" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.18.tgz#f4dc5980b8afa0fc9c784b8d931afde913413e39" - integrity sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw== - -babel-plugin-transform-typescript-metadata@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz#7a327842d8c36ffe07ee1b5276434e56c297c9b7" - integrity sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^29.4.3, babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.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== - -base-x@^2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-2.0.6.tgz#4582a91ebcec99ee06f4e4032030b0cf1c2941d8" - integrity sha512-UAmjxz9KbK+YIi66xej+pZVo/vxUOh49ubEvZW5egCbxhur05pBb+hwuireQwKO4nDpsNm64/jEei17LEpsr5g== - dependencies: - safe-buffer "^5.0.1" - -base-x@^3.0.2, base-x@^3.0.8: - version "3.0.10" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" - integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== - dependencies: - safe-buffer "^5.0.1" - -base-x@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" - integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== - -base64-js@^1.2.0, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -basic-auth@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" - integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== - dependencies: - safe-buffer "5.1.2" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - -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" - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -before-after-hook@^2.2.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" - integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== - -better-sqlite3@11.2.1: - version "11.2.1" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-11.2.1.tgz#3c6b8a8e2e12444d380e811796b59c8aba012e03" - integrity sha512-Xbt1d68wQnUuFIEVsbt6V+RG30zwgbtCGQ4QOcXVrOH0FE4eHk64FWZ9NUfRHS4/x1PXqwz/+KOrnXD7f0WieA== - dependencies: - bindings "^1.5.0" - prebuild-install "^7.1.1" - -big.js@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" - integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -bignumber.js@9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -bin-links@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-3.0.3.tgz#3842711ef3db2cd9f16a5f404a996a12db355a6e" - integrity sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA== - dependencies: - cmd-shim "^5.0.0" - mkdirp-infer-owner "^2.0.0" - npm-normalize-package-bin "^2.0.0" - read-cmd-shim "^3.0.0" - rimraf "^3.0.0" - write-file-atomic "^4.0.0" - -binary-extensions@^2.0.0, binary-extensions@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -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" - -bip39-light@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/bip39-light/-/bip39-light-1.0.7.tgz#06a72f251b89389a136d3f177f29b03342adc5ba" - integrity sha512-WDTmLRQUsiioBdTs9BmSEmkJza+8xfJmptsNJjxnoq3EydSa/ZBXT6rm66KoT3PJIRYMnhSKNR7S9YL1l7R40Q== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - -bip39@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" - integrity sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ== - dependencies: - "@types/node" "11.11.6" - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - -bl@^4.0.3, 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" - -bl@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" - integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== - dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bl@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e" - integrity sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw== - dependencies: - readable-stream "~1.0.26" - -blob-to-it@^2.0.0: - version "2.0.7" - resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-2.0.7.tgz#637b8bb14963a7fce658ee758d9251dd1ee9fd3c" - integrity sha512-mFAR/GKDDqFOkSBB7shXfsUZwU5DgK453++I8/SImNacfJsdKlx/oHTO0T4ZYHz8A2dnSONE+CX8L29VlWGKiQ== - dependencies: - browser-readablestream-to-it "^2.0.0" - -blob-util@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" - integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== - -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -bonjour-service@^1.0.11: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" - integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== - dependencies: - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -borsh@0.7.0, borsh@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" - integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== - dependencies: - bn.js "^5.2.0" - bs58 "^4.0.0" - text-encoding-utf-8 "^1.0.2" - -borsh@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-1.0.0.tgz#b564c8cc8f7a91e3772b9aef9e07f62b84213c1f" - integrity sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ== - -bottleneck@^2.15.3: - version "2.19.5" - resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" - integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== - -bowser@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== - -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.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browser-headers@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/browser-headers/-/browser-headers-0.4.1.tgz#4308a7ad3b240f4203dbb45acedb38dc2d65dd02" - integrity sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg== - -browser-readablestream-to-it@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" - integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== - -browser-readablestream-to-it@^2.0.0: - version "2.0.7" - resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.7.tgz#ddcc4b34a4b08ef415f89eb215297acea3e05fd0" - integrity sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg== - -browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-fs@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-fs/-/browserify-fs-1.0.0.tgz#f075aa8a729d4d1716d066620e386fcc1311a96f" - integrity sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg== - dependencies: - level-filesystem "^1.0.1" - level-js "^2.1.3" - levelup "^0.18.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" - integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== - dependencies: - bn.js "^5.2.1" - browserify-rsa "^4.1.0" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.5" - hash-base "~3.0" - inherits "^2.0.4" - parse-asn1 "^5.1.7" - readable-stream "^2.3.8" - safe-buffer "^5.2.1" - -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.6.6: - version "4.23.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed" - integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== - dependencies: - caniuse-lite "^1.0.30001640" - electron-to-chromium "^1.4.820" - node-releases "^2.0.14" - update-browserslist-db "^1.1.0" - -browserslist@^4.21.3, browserslist@^4.21.5: - version "4.21.9" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" - integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== - dependencies: - caniuse-lite "^1.0.30001503" - electron-to-chromium "^1.4.431" - node-releases "^2.0.12" - update-browserslist-db "^1.0.11" - -bs-logger@0.x, bs-logger@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bs58@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.0.tgz#65f5deaf6d74e6135a99f763ca6209ab424b9172" - integrity sha512-/jcGuUuSebyxwLLfKrbKnCJttxRf9PM51EnHTwmFKBxl4z1SGkoAhrfd6uZKE0dcjQTfm6XzTP8DPr1tzE4KIw== - dependencies: - base-x "^2.0.1" - -bs58@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" - integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== - dependencies: - base-x "^4.0.0" - -bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.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-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-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@^5.5.0, buffer@^5.6.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" - -bufferutil@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" - integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== - dependencies: - node-gyp-build "^4.3.0" - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== - -builtins@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.1.0.tgz#6d85eeb360c4ebc166c3fdef922a15aa7316a5e8" - integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg== - dependencies: - semver "^7.0.0" - -busboy@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cac@^6.7.14: - version "6.7.14" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - -cacache@17.1.3: - version "17.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044" - integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^7.7.1" - minipass "^5.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - -cacache@^15.0.5: - version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - dependencies: - "@npmcli/fs" "^1.0.0" - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" - -cacache@^16.0.0, cacache@^16.1.0, cacache@^16.1.3: - version "16.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" - integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== - dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^2.0.0" - -cacache@^17.0.0: - version "17.1.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" - integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^7.7.1" - minipass "^7.0.3" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - -cachedir@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d" - integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ== - -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -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== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001503, caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001640: - version "1.0.30001643" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz" - integrity sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg== - -capital-case@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" - integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -cardinal@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" - integrity sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw== - dependencies: - ansicolors "~0.3.2" - redeyed "~2.1.0" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -catharsis@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" - integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== - dependencies: - lodash "^4.17.15" - -cborg@^1.5.4, cborg@^1.6.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" - integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@adraffy/ens-normalize@npm:1.10.0": + version: 1.10.0 + resolution: "@adraffy/ens-normalize@npm:1.10.0" + checksum: 10c0/78ae700847a2516d5a0ae12c4e23d09392a40c67e73b137eb7189f51afb1601c8d18784aeda2ed288a278997824dc924d1f398852c21d41ee2c4c564f2fb4d26 + languageName: node + linkType: hard + +"@adraffy/ens-normalize@npm:1.11.0": + version: 1.11.0 + resolution: "@adraffy/ens-normalize@npm:1.11.0" + checksum: 10c0/5111d0f1a273468cb5661ed3cf46ee58de8f32f84e2ebc2365652e66c1ead82649df94c736804e2b9cfa831d30ef24e1cc3575d970dbda583416d3a98d8870a6 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:2.2.1": + version: 2.2.1 + resolution: "@ampproject/remapping@npm:2.2.1" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.0" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10c0/92ce5915f8901d8c7cd4f4e6e2fe7b9fd335a29955b400caa52e0e5b12ca3796ada7c2f10e78c9c5b0f9c2539dff0ffea7b19850a56e1487aa083531e1e46d43 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + +"@angular-devkit/architect@npm:0.1601.8": + version: 0.1601.8 + resolution: "@angular-devkit/architect@npm:0.1601.8" + dependencies: + "@angular-devkit/core": "npm:16.1.8" + rxjs: "npm:7.8.1" + checksum: 10c0/dbe26964f4e864531ffa2d9f5f368d3f3e9fabb6781d920249afe7a216c8877b747b7f1413afaff2b4525c2b55318f6b9427b27bf7a554d419a389f33a57a72b + languageName: node + linkType: hard + +"@angular-devkit/build-angular@npm:16.1.8": + version: 16.1.8 + resolution: "@angular-devkit/build-angular@npm:16.1.8" + dependencies: + "@ampproject/remapping": "npm:2.2.1" + "@angular-devkit/architect": "npm:0.1601.8" + "@angular-devkit/build-webpack": "npm:0.1601.8" + "@angular-devkit/core": "npm:16.1.8" + "@babel/core": "npm:7.22.5" + "@babel/generator": "npm:7.22.7" + "@babel/helper-annotate-as-pure": "npm:7.22.5" + "@babel/helper-split-export-declaration": "npm:7.22.5" + "@babel/plugin-proposal-async-generator-functions": "npm:7.20.7" + "@babel/plugin-transform-async-to-generator": "npm:7.22.5" + "@babel/plugin-transform-runtime": "npm:7.22.5" + "@babel/preset-env": "npm:7.22.5" + "@babel/runtime": "npm:7.22.5" + "@babel/template": "npm:7.22.5" + "@discoveryjs/json-ext": "npm:0.5.7" + "@ngtools/webpack": "npm:16.1.8" + "@vitejs/plugin-basic-ssl": "npm:1.0.1" + ansi-colors: "npm:4.1.3" + autoprefixer: "npm:10.4.14" + babel-loader: "npm:9.1.2" + babel-plugin-istanbul: "npm:6.1.1" + browserslist: "npm:^4.21.5" + cacache: "npm:17.1.3" + chokidar: "npm:3.5.3" + copy-webpack-plugin: "npm:11.0.0" + critters: "npm:0.0.20" + css-loader: "npm:6.8.1" + esbuild: "npm:0.17.19" + esbuild-wasm: "npm:0.17.19" + fast-glob: "npm:3.2.12" + https-proxy-agent: "npm:5.0.1" + inquirer: "npm:8.2.4" + jsonc-parser: "npm:3.2.0" + karma-source-map-support: "npm:1.4.0" + less: "npm:4.1.3" + less-loader: "npm:11.1.0" + license-webpack-plugin: "npm:4.0.2" + loader-utils: "npm:3.2.1" + magic-string: "npm:0.30.0" + mini-css-extract-plugin: "npm:2.7.6" + mrmime: "npm:1.0.1" + open: "npm:8.4.2" + ora: "npm:5.4.1" + parse5-html-rewriting-stream: "npm:7.0.0" + picomatch: "npm:2.3.1" + piscina: "npm:3.2.0" + postcss: "npm:8.4.24" + postcss-loader: "npm:7.3.2" + resolve-url-loader: "npm:5.0.0" + rxjs: "npm:7.8.1" + sass: "npm:1.63.2" + sass-loader: "npm:13.3.1" + semver: "npm:7.5.3" + source-map-loader: "npm:4.0.1" + source-map-support: "npm:0.5.21" + terser: "npm:5.17.7" + text-table: "npm:0.2.0" + tree-kill: "npm:1.2.2" + tslib: "npm:2.5.3" + vite: "npm:4.3.9" + webpack: "npm:5.86.0" + webpack-dev-middleware: "npm:6.1.1" + webpack-dev-server: "npm:4.15.0" + webpack-merge: "npm:5.9.0" + webpack-subresource-integrity: "npm:5.1.0" + peerDependencies: + "@angular/compiler-cli": ^16.0.0 + "@angular/localize": ^16.0.0 + "@angular/platform-server": ^16.0.0 + "@angular/service-worker": ^16.0.0 + jest: ^29.5.0 + jest-environment-jsdom: ^29.5.0 + karma: ^6.3.0 + ng-packagr: ^16.0.0 + protractor: ^7.0.0 + tailwindcss: ^2.0.0 || ^3.0.0 + typescript: ">=4.9.3 <5.2" + dependenciesMeta: + esbuild: + optional: true + peerDependenciesMeta: + "@angular/localize": + optional: true + "@angular/platform-server": + optional: true + "@angular/service-worker": + optional: true + jest: + optional: true + jest-environment-jsdom: + optional: true + karma: + optional: true + ng-packagr: + optional: true + protractor: + optional: true + tailwindcss: + optional: true + checksum: 10c0/d4c0177ccc2dd8f5682cbf6969a31e4f9315063dda051bae1839521e530ca7b1ddad8e82cfd395502880c811364a87f6c7d04bb6525a65b93304ebb9c1efa33e + languageName: node + linkType: hard + +"@angular-devkit/build-webpack@npm:0.1601.8": + version: 0.1601.8 + resolution: "@angular-devkit/build-webpack@npm:0.1601.8" + dependencies: + "@angular-devkit/architect": "npm:0.1601.8" + rxjs: "npm:7.8.1" + peerDependencies: + webpack: ^5.30.0 + webpack-dev-server: ^4.0.0 + checksum: 10c0/abeab0b1ef422ccd2dbbf871cbf205af7f90f6c8c499ca0dde31bd5ce62c329c9a257fae37e1520f50ee7686f5b32d8ede199f86ce3ec67ffa4aee44c45fce1f + languageName: node + linkType: hard + +"@angular-devkit/core@npm:15.2.8": + version: 15.2.8 + resolution: "@angular-devkit/core@npm:15.2.8" + dependencies: + ajv: "npm:8.12.0" + ajv-formats: "npm:2.1.1" + jsonc-parser: "npm:3.2.0" + rxjs: "npm:6.6.7" + source-map: "npm:0.7.4" + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + checksum: 10c0/a742dabc0928db8b6d3290d79ff1fd64dba65d386792b4f8db29c8df5792b2cd455c8189a2060fa6dbb5cc0515a4542c9b08c1fa0ea71d41c30e3c23dfb4c589 + languageName: node + linkType: hard + +"@angular-devkit/core@npm:16.1.8": + version: 16.1.8 + resolution: "@angular-devkit/core@npm:16.1.8" + dependencies: + ajv: "npm:8.12.0" + ajv-formats: "npm:2.1.1" + jsonc-parser: "npm:3.2.0" + rxjs: "npm:7.8.1" + source-map: "npm:0.7.4" + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + checksum: 10c0/e33792c18bbc4dee7556c9e2eb0b0d14550bab0525053425857c8d667ad989688fc73bab5cacbcf15c8bf8ac5e7426f03f8a7c4ed645dce2f5a5b7a07f083138 + languageName: node + linkType: hard + +"@angular-devkit/schematics@npm:15.2.8": + version: 15.2.8 + resolution: "@angular-devkit/schematics@npm:15.2.8" + dependencies: + "@angular-devkit/core": "npm:15.2.8" + jsonc-parser: "npm:3.2.0" + magic-string: "npm:0.29.0" + ora: "npm:5.4.1" + rxjs: "npm:6.6.7" + checksum: 10c0/be4b414384b390a8951814e1cc933945ee34f243de84875d35923d96c2186c63849fac36694c5bf0019609ba0bf8124bc3b3721de7fb254e8c62b400a07af90d + languageName: node + linkType: hard + +"@angular-devkit/schematics@npm:16.1.8": + version: 16.1.8 + resolution: "@angular-devkit/schematics@npm:16.1.8" + dependencies: + "@angular-devkit/core": "npm:16.1.8" + jsonc-parser: "npm:3.2.0" + magic-string: "npm:0.30.0" + ora: "npm:5.4.1" + rxjs: "npm:7.8.1" + checksum: 10c0/e53e56ee6d5dcb20ffc11ed6252be5ef5d0cdcb329e70cca1d70359d23e76cf867424f84e51283047ba01bae6ba1861bf1035e39df736d696a540711f288ea34 + languageName: node + linkType: hard + +"@angular-eslint/bundled-angular-compiler@npm:15.0.0": + version: 15.0.0 + resolution: "@angular-eslint/bundled-angular-compiler@npm:15.0.0" + checksum: 10c0/70993c6e813c27091e6b95a5531f2835d77e02cb90179f615adb997944432d20d3e3daa7affd52927936501722c79122f7fcb82b1feba9b6afbbfc1a08eec7c1 + languageName: node + linkType: hard + +"@angular-eslint/eslint-plugin-template@npm:15.0.0": + version: 15.0.0 + resolution: "@angular-eslint/eslint-plugin-template@npm:15.0.0" + dependencies: + "@angular-eslint/bundled-angular-compiler": "npm:15.0.0" + "@angular-eslint/utils": "npm:15.0.0" + "@typescript-eslint/type-utils": "npm:5.43.0" + "@typescript-eslint/utils": "npm:5.43.0" + aria-query: "npm:5.1.3" + axobject-query: "npm:3.1.1" + peerDependencies: + eslint: ^7.20.0 || ^8.0.0 + typescript: "*" + checksum: 10c0/c41fabacaa22e799a5333cafe2a14d103c99291bed5cd2e46a2c5bcffbbc521809452ba34736818f30c907026ef35473f9fbc57552c595c511a902845ca8fee5 + languageName: node + linkType: hard + +"@angular-eslint/eslint-plugin@npm:15.0.0": + version: 15.0.0 + resolution: "@angular-eslint/eslint-plugin@npm:15.0.0" + dependencies: + "@angular-eslint/utils": "npm:15.0.0" + "@typescript-eslint/utils": "npm:5.43.0" + peerDependencies: + eslint: ^7.20.0 || ^8.0.0 + typescript: "*" + checksum: 10c0/9f54c3d5d5d13b4cddcfe1f9a38e9f9445b8fa4b893ebf83a2af97765005a9780cb244218f57ac1461dc0ad4282b8d019e2465819cd5e8273e2de411dcc78b59 + languageName: node + linkType: hard + +"@angular-eslint/template-parser@npm:15.0.0": + version: 15.0.0 + resolution: "@angular-eslint/template-parser@npm:15.0.0" + dependencies: + "@angular-eslint/bundled-angular-compiler": "npm:15.0.0" + eslint-scope: "npm:^7.0.0" + peerDependencies: + eslint: ^7.20.0 || ^8.0.0 + typescript: "*" + checksum: 10c0/c504a12f6c9970235dc0eaac769488d0446f3e3e5a7afde09cd03424d7c95d3620c57423acee8fe64e1b2546538880e81347324a562697cfb4ae8268d19be411 + languageName: node + linkType: hard + +"@angular-eslint/utils@npm:15.0.0": + version: 15.0.0 + resolution: "@angular-eslint/utils@npm:15.0.0" + dependencies: + "@angular-eslint/bundled-angular-compiler": "npm:15.0.0" + "@typescript-eslint/utils": "npm:5.43.0" + peerDependencies: + eslint: ^7.20.0 || ^8.0.0 + typescript: "*" + checksum: 10c0/638b3eaaa3ad333935cc6d77e0c450f0755b796e179ec794e723f1f3d030dab46e878e05b5683e7a45eb7447b63639c2636949ff94cf1a3cb0c432a95ed5e9ce + languageName: node + linkType: hard + +"@angular/animations@npm:16.1.9": + version: 16.1.9 + resolution: "@angular/animations@npm:16.1.9" + dependencies: + tslib: "npm:^2.3.0" + peerDependencies: + "@angular/core": 16.1.9 + checksum: 10c0/6c2d4d6b911fe71db2303c08fbbc5e579b32e6ac937e4168a7c05948d84ba58dcc85e165e480c2ed5203d37ef1967fef98fe4fa334ef1bf30c150e2daa333ea3 + languageName: node + linkType: hard + +"@angular/cli@npm:16.1.8": + version: 16.1.8 + resolution: "@angular/cli@npm:16.1.8" + dependencies: + "@angular-devkit/architect": "npm:0.1601.8" + "@angular-devkit/core": "npm:16.1.8" + "@angular-devkit/schematics": "npm:16.1.8" + "@schematics/angular": "npm:16.1.8" + "@yarnpkg/lockfile": "npm:1.1.0" + ansi-colors: "npm:4.1.3" + ini: "npm:4.1.1" + inquirer: "npm:8.2.4" + jsonc-parser: "npm:3.2.0" + npm-package-arg: "npm:10.1.0" + npm-pick-manifest: "npm:8.0.1" + open: "npm:8.4.2" + ora: "npm:5.4.1" + pacote: "npm:15.2.0" + resolve: "npm:1.22.2" + semver: "npm:7.5.3" + symbol-observable: "npm:4.0.0" + yargs: "npm:17.7.2" + bin: + ng: bin/ng.js + checksum: 10c0/a43823c6c214cab0456c02efb8363cf5e36018c204f86ae64d07352073fef23debb1aaf03b3e4f9dbb1eca67fb0102a49619e4ae60dfa299a803b963d98315ce + languageName: node + linkType: hard + +"@angular/common@npm:16.1.9": + version: 16.1.9 + resolution: "@angular/common@npm:16.1.9" + dependencies: + tslib: "npm:^2.3.0" + peerDependencies: + "@angular/core": 16.1.9 + rxjs: ^6.5.3 || ^7.4.0 + checksum: 10c0/6605292dd6525f7ee24d2919e69a55d33646e0f5ae7080554e768166f4c686e49846e7fb058d500f862e373f200752ede2b38d8d5bbfdcfd0fd0d39084081562 + languageName: node + linkType: hard + +"@angular/compiler-cli@npm:16.1.8": + version: 16.1.8 + resolution: "@angular/compiler-cli@npm:16.1.8" + dependencies: + "@babel/core": "npm:7.22.5" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + chokidar: "npm:^3.0.0" + convert-source-map: "npm:^1.5.1" + reflect-metadata: "npm:^0.1.2" + semver: "npm:^7.0.0" + tslib: "npm:^2.3.0" + yargs: "npm:^17.2.1" + peerDependencies: + "@angular/compiler": 16.1.8 + typescript: ">=4.9.3 <5.2" + bin: + ng-xi18n: bundles/src/bin/ng_xi18n.js + ngc: bundles/src/bin/ngc.js + ngcc: bundles/ngcc/index.js + checksum: 10c0/a99a5a056545f824b4b7e911cd75d06ebac3c7a0a4efeab4640ed56f071041d36c4aba11188f4c1d5e68baa12170eea0f38c34cdbc048c71e628695beed56740 + languageName: node + linkType: hard + +"@angular/compiler@npm:16.1.9": + version: 16.1.9 + resolution: "@angular/compiler@npm:16.1.9" + dependencies: + tslib: "npm:^2.3.0" + peerDependencies: + "@angular/core": 16.1.9 + peerDependenciesMeta: + "@angular/core": + optional: true + checksum: 10c0/7381636e404f219bf42105fd41f6e178f619cee6bc74ddfb21c142726e1d62f5232dd305dd5026acaed6049daf4011800cf96865d4aa1eccb6b5e3cd757589c9 + languageName: node + linkType: hard + +"@angular/core@npm:16.1.9": + version: 16.1.9 + resolution: "@angular/core@npm:16.1.9" + dependencies: + tslib: "npm:^2.3.0" + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.13.0 + checksum: 10c0/529461f0b59faadf2187a516a6300284ba3c71b5f8e8e0d408742ffbc95d50cd8759a84eb60fe6634bff513698acd2e644b4b3fb5e512e5eb2944ebb64adecde + languageName: node + linkType: hard + +"@angular/forms@npm:16.1.9": + version: 16.1.9 + resolution: "@angular/forms@npm:16.1.9" + dependencies: + tslib: "npm:^2.3.0" + peerDependencies: + "@angular/common": 16.1.9 + "@angular/core": 16.1.9 + "@angular/platform-browser": 16.1.9 + rxjs: ^6.5.3 || ^7.4.0 + checksum: 10c0/350343c63c4dbeb5f01b70403b20f8fe344049915d85d79e83e2cb0731ed3744394f09e1bbcbe2799e72ad1d23cc3021a168e84c40b890e655ca59d4f2d56bff + languageName: node + linkType: hard + +"@angular/language-service@npm:15.2.9": + version: 15.2.9 + resolution: "@angular/language-service@npm:15.2.9" + checksum: 10c0/4370ecaccff2183b3e228ba3944b33cac1fdb74584f4cdfe6927fe41c501faa7c376534ea53df16ab1eeef0015bcfc7301a7a5529f6cd3fdb14c79dc0a6e283d + languageName: node + linkType: hard + +"@angular/platform-browser-dynamic@npm:16.1.9": + version: 16.1.9 + resolution: "@angular/platform-browser-dynamic@npm:16.1.9" + dependencies: + tslib: "npm:^2.3.0" + peerDependencies: + "@angular/common": 16.1.9 + "@angular/compiler": 16.1.9 + "@angular/core": 16.1.9 + "@angular/platform-browser": 16.1.9 + checksum: 10c0/0197919184863325435039575b327b9f64e570a6bc06a5761d4ea74305208bf3c8d9f498e874e3514f957cb770763e7d68edd950272eafec43d646ad1df85cb7 + languageName: node + linkType: hard + +"@angular/platform-browser@npm:16.1.9": + version: 16.1.9 + resolution: "@angular/platform-browser@npm:16.1.9" + dependencies: + tslib: "npm:^2.3.0" + peerDependencies: + "@angular/animations": 16.1.9 + "@angular/common": 16.1.9 + "@angular/core": 16.1.9 + peerDependenciesMeta: + "@angular/animations": + optional: true + checksum: 10c0/ac226b30fad0797c51851d33bfa7e4589f0ba2036a9bf79acc5c143ff25ae7c73adffd353b6da2f7e87336d6680751c53682537a530f466ffa56335a36e9421c + languageName: node + linkType: hard + +"@angular/router@npm:16.1.9": + version: 16.1.9 + resolution: "@angular/router@npm:16.1.9" + dependencies: + tslib: "npm:^2.3.0" + peerDependencies: + "@angular/common": 16.1.9 + "@angular/core": 16.1.9 + "@angular/platform-browser": 16.1.9 + rxjs: ^6.5.3 || ^7.4.0 + checksum: 10c0/c690abf230108b9b9fc522a10c62a2f6808babc074feecd4a84ae673392104d5adec857111699504ae1d11ea955c067e0171c208acd0d4bc6071cbb55557e5a2 + languageName: node + linkType: hard + +"@assemblyscript/loader@npm:^0.10.1": + version: 0.10.1 + resolution: "@assemblyscript/loader@npm:0.10.1" + checksum: 10c0/70bd0c9dc4f63d5d2b3b9d94239507320623b1bd83fc758306e64a6fe616c8e589586edcaeb92772bbf3c6379233f26d9c1b4830d23ddba64fd1d922a47577d5 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.22.5, @babel/code-frame@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/code-frame@npm:7.25.7" + dependencies: + "@babel/highlight": "npm:^7.25.7" + picocolors: "npm:^1.0.0" + checksum: 10c0/14825c298bdec914caf3d24d1383b6d4cd6b030714686004992f4fc251831ecf432236652896f99d5d341f17170ae9a07b58d8d7b15aa0df8cfa1c5a7d5474bc + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/compat-data@npm:7.25.7" + checksum: 10c0/e5cc915abdd18d021236474a96606b2d4a915c4fb620c1ad776b8a08d91111e788cb3b7e9bad43593d4e0bfa4f06894357bcb0984102de1861b9e7322b6bc9f8 + languageName: node + linkType: hard + +"@babel/core@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/core@npm:7.22.5" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.22.5" + "@babel/generator": "npm:^7.22.5" + "@babel/helper-compilation-targets": "npm:^7.22.5" + "@babel/helper-module-transforms": "npm:^7.22.5" + "@babel/helpers": "npm:^7.22.5" + "@babel/parser": "npm:^7.22.5" + "@babel/template": "npm:^7.22.5" + "@babel/traverse": "npm:^7.22.5" + "@babel/types": "npm:^7.22.5" + convert-source-map: "npm:^1.7.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.2" + semver: "npm:^6.3.0" + checksum: 10c0/c00e1474a41c18b669511dd1a1bd757d854cc8128218421a73c3b1c76b44fb22a57bbbd29a73b7a156cb1460af7a94602f81bed76b8d78c6ffae4de954b32a50 + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.15.0, @babel/core@npm:^7.15.5, @babel/core@npm:^7.19.6, @babel/core@npm:^7.20.12, @babel/core@npm:^7.23.9": + version: 7.25.7 + resolution: "@babel/core@npm:7.25.7" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helpers": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/dad20af39624086afc3a0910bd97ae712c9ad0e9dda09fc5da93876e8ea1802b63ddd81c44f4aa8a9834db46de801eaab1ce9b81ab54b4fe907ae052c24de136 + languageName: node + linkType: hard + +"@babel/generator@npm:7.22.7": + version: 7.22.7 + resolution: "@babel/generator@npm:7.22.7" + dependencies: + "@babel/types": "npm:^7.22.5" + "@jridgewell/gen-mapping": "npm:^0.3.2" + "@jridgewell/trace-mapping": "npm:^0.3.17" + jsesc: "npm:^2.5.1" + checksum: 10c0/7eb106916d782d397d0d4370bb4b23229229481218693a55f3fc0b756d4e9dc39cee41872f1735decb0b34be8dbb98c4488d5f7abbf6e40826d5dcac045b1f12 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.25.7, @babel/generator@npm:^7.7.2": + version: 7.25.7 + resolution: "@babel/generator@npm:7.25.7" + dependencies: + "@babel/types": "npm:^7.25.7" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10c0/c03a26c79864d60d04ce36b649c3fa0d6fd7b2bf6a22e22854a0457aa09206508392dd73ee40e7bc8d50b3602f9ff068afa47770cda091d332e7db1ca382ee96 + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.7" + dependencies: + "@babel/types": "npm:^7.25.7" + checksum: 10c0/2f020b0fa9d336b5778485cc2de3141561ec436a7591b685457a5bcdae4ce41d9ddee68169c95504e0789e5a4327e73b8b7e72e5b60e82e96d730c4d19255248 + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.7" + dependencies: + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/e9dc5a7920a1d74150dec53ccd5e34f2b31ae307df7cdeec6289866f7bda97ecb1328b49a7710ecde5db5b6daad768c904a030f9a0fa3184963b0017622c42aa + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-compilation-targets@npm:7.25.7" + dependencies: + "@babel/compat-data": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/705be7e5274a3fdade68e3e2cf42e2b600316ab52794e13b91299a16f16c926f15886b6e9d6df20eb943ccc1cdba5a363d4766f8d01e47b8e6f4e01175f5e66c + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-member-expression-to-functions": "npm:^7.25.7" + "@babel/helper-optimise-call-expression": "npm:^7.25.7" + "@babel/helper-replace-supers": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/405c3c1a137acda1206380a96993cf2cfd808b3bee1c11c4af47ee0f03a20858497aa53394d6adc5431793c543be5e02010620e871a5ab39d938ae90a54b50f2 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + regexpu-core: "npm:^6.1.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/75919fd5a67cd7be8497b56f7b9ed6b4843cb401956ba8d403aa9ae5b005bc28e35c7f27e704d820edbd1154394ed7a7984d4719916795d89d716f6980fe8bd4 + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.4.4": + version: 0.4.4 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.4" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + debug: "npm:^4.1.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.14.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/60126f5f719b9e2114df62e3bf3ac0797b71d8dc733db60192eb169b004fde72ee309fa5848c5fdfe98b8e8863c46f55e16da5aa8a4e420b4d2670cd0c5dd708 + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.5.0": + version: 0.5.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.5.0" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + debug: "npm:^4.1.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.14.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/2b053b96a0c604a7e0f5c7d13a8a55f4451d938f7af42bd40f62a87df15e6c87a0b1dbd893a0f0bb51077b54dc3ba00a58b166531a5940ad286ab685dd8979ec + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.6.2": + version: 0.6.2 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + debug: "npm:^4.1.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.14.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/f777fe0ee1e467fdaaac059c39ed203bdc94ef2465fb873316e9e1acfc511a276263724b061e3b0af2f6d7ad3ff174f2bb368fde236a860e0f650fda43d7e022 + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.18.9": + version: 7.24.7 + resolution: "@babel/helper-environment-visitor@npm:7.24.7" + dependencies: + "@babel/types": "npm:^7.24.7" + checksum: 10c0/36ece78882b5960e2d26abf13cf15ff5689bf7c325b10a2895a74a499e712de0d305f8d78bb382dd3c05cfba7e47ec98fe28aab5674243e0625cd38438dd0b2d + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-member-expression-to-functions@npm:7.25.7" + dependencies: + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/1e948162ab48d84593a7c6ec9570d14c906146f1697144fc369c59dbeb00e4a062da67dd06cb0d8f98a044cd8389002dcf2ab6f5613d99c35748307846ec63fc + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-imports@npm:7.25.7" + dependencies: + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/0fd0c3673835e5bf75558e184bcadc47c1f6dd2fe2016d53ebe1e5a6ae931a44e093015c2f9a6651c1a89f25c76d9246710c2b0b460b95ee069c464f2837fa2c + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-transforms@npm:7.25.7" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-simple-access": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/f37fa7d1d4df21690535b278468cbd5faf0133a3080f282000cfa4f3ffc9462a1458f866b04b6a2f2d1eec4691236cba9a867da61270dab3ab19846e62f05090 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-optimise-call-expression@npm:7.25.7" + dependencies: + "@babel/types": "npm:^7.25.7" + checksum: 10c0/19b4cc7e77811b1fedca4928dbc14026afef913c2ba4142e5e110ebdcb5c3b2efc0f0fbee9f362c23a194674147b9d627adea71c289b9be08b9067bc0085308b + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.25.7 + resolution: "@babel/helper-plugin-utils@npm:7.25.7" + checksum: 10c0/241f8cf3c5b7700e91cab7cfe5b432a3c710ae3cd5bb96dc554da536a6d25f5b9f000cc0c0917501ceb4f76ba92599ee3beb25e10adaf96be59f8df89a842faf + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.18.9, @babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-wrap-function": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/972d84876adce6ab61c87a2df47e1afc790b73cff0d1767d0a1c5d9f7aa5e91d8c581a272b66b2051a26cfbb167d8a780564705e488e3ce1f477f1c15059bc5f + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-replace-supers@npm:7.25.7" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.25.7" + "@babel/helper-optimise-call-expression": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/761d64ee74429f7326a6aa65e2cd5bfcb8de9e3bc3f1efb14b8f610d2410f003b0fca52778dc801d49ff8fbc90b057e8f51b27c62b0b05c95eaf23140ca1287b + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-simple-access@npm:7.25.7" + dependencies: + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/eed1b499bfb4f613c18debd61517e3de77b6da2727ca025aa05ac81599e0269f1dddb5237db04e8bb598115d015874752e0a7f11ff38672d74a4976097417059 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.7" + dependencies: + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/5804adb893849a9d8cfb548e3812566a81d95cb0c9a10d66b52912d13f488e577c33063bf19bc06ac70e6333162a7370d67ba1a1c3544d37fb50d5f4a00db4de + languageName: node + linkType: hard + +"@babel/helper-split-export-declaration@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/helper-split-export-declaration@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/a1e463086f97778584c44129c5c37282d033bf97867b300ff42e64279df18d41fe0e56ebe6a1b27f907afa66ad2a313558db8d2e83e73384c5b22ac726c9c52a + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-string-parser@npm:7.25.7" + checksum: 10c0/73ef2ceb81f8294678a0afe8ab0103729c0370cac2e830e0d5128b03be5f6a2635838af31d391d763e3c5a4460ed96f42fd7c9b552130670d525be665913bc4c + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-identifier@npm:7.25.7" + checksum: 10c0/07438e5bf01ab2882a15027fdf39ac3b0ba1b251774a5130917907014684e2f70fef8fd620137ca062c4c4eedc388508d2ea7a3a7d9936a32785f4fe116c68c0 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.16.7, @babel/helper-validator-option@npm:^7.22.5, @babel/helper-validator-option@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-option@npm:7.25.7" + checksum: 10c0/12ed418c8e3ed9ed44c8c80d823f4e42d399b5eb2e423adccb975e31a31a008cd3b5d8eab688b31f740caff4a1bb28fe06ea2fa7d635aee34cc0ad6995d50f0a + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-wrap-function@npm:7.25.7" + dependencies: + "@babel/template": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/b5d412f72697f4a4ce4cb9784fbaf82501c63cf95066c0eadd3179e3439cbbf0aa5fa4858d93590083671943cd357aeb87286958df34aa56fdf8a4c9dea39755 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.22.5, @babel/helpers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helpers@npm:7.25.7" + dependencies: + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/3b3ae9e373bd785414195ef8f59976a69d5a6ebe0ef2165fdcc5165e5c3ee09e0fcee94bb457df2ddb8c0532e4146d0a9b7a96b3497399a4bff4ffe196b30228 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/highlight@npm:7.25.7" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.25.7" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/1f5894fdb0a0af6101fb2822369b2eeeae32cbeae2ef73ff73fc6a0a4a20471565cd9cfa589f54ed69df66adeca7c57266031ca9134b7bd244d023a488d419aa + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/parser@npm:7.25.7" + dependencies: + "@babel/types": "npm:^7.25.7" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/b771469bb6b636c18a8d642b9df3c73913c3860a979591e1a29a98659efd38b81d3e393047b5251fe382d4c82c681c12da9ce91c98d69316d2604d155a214bcf + languageName: node + linkType: hard + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/c6ba97c39973897a2ab021c4a77221e1e93e853a5811d498db325da1bd692e41fa521db6d91bb709ccafd4e54ddd00869ffb35846923c3ccd49d46124b316904 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ac284868bf410f952c6959b0d77708464127160416f003b05c8127d30e64792d671abc167ebf778b17707e32174223ea8d3ff487276991fa90297d92f0dac6e2 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5, @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/1bffc0a20c8c82b4c77515eb4c99b961b38184116f008bb42bed4e12d3379ba7b2bc6cf299bcea8118d645bb7a5e0caa83969842f16dd1fce49fb3a050e4ac65 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.5, @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 10c0/32223f012614a0b2657579317ded7d0d09af2aa316285715c5012f974d0f15c2ce2fe0d8e80fdd9bac6c10c21c93cc925a9dfd6c8e21ce7ba1a9fe06a58088b4 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/aa2ee7a5954d187de6cbcca0e0b64cfb79c4d224c332d1eb1e0e4afd92ef1a1f4bc4af24f66154097ccb348c08121a875456f47baed220b1b9e93584e6a19b65 + languageName: node + linkType: hard + +"@babel/plugin-proposal-async-generator-functions@npm:7.20.7": + version: 7.20.7 + resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.18.9" + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/helper-remap-async-to-generator": "npm:^7.18.9" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0f4bc01805704ae4840536acc9888c50a32250e9188d025063bd17fe77ed171a12361c3dc83ce99664dcd73aec612accb8da95b0d8b825c854931b2860c0bfb5 + languageName: node + linkType: hard + +"@babel/plugin-proposal-class-properties@npm:^7.14.5": + version: 7.18.6 + resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d5172ac6c9948cdfc387e94f3493ad86cb04035cf7433f86b5d358270b1b9752dc25e176db0c5d65892a246aca7bdb4636672e15626d7a7de4bc0bd0040168d9 + languageName: node + linkType: hard + +"@babel/plugin-proposal-decorators@npm:^7.14.5": + version: 7.25.7 + resolution: "@babel/plugin-proposal-decorators@npm:7.25.7" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-decorators": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/224785977af0e6318a8ef7a54481221df62f2148e04a6143a1a664e92461d98d2ffbf6d72caab1bee5e24483cc0fc9707ec2ecef943a35640019496d1334dd0c + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + languageName: node + linkType: hard + +"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": + version: 7.18.6 + resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c68feae57d9b1f4d98ecc2da63bda1993980deb509ccb08f6eace712ece8081032eb6532c304524b544c2dd577e2f9c2fe5c5bfd73d1955c946300def6fc7493 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + +"@babel/plugin-syntax-decorators@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-syntax-decorators@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7a2a5b6f1965b2cc883d534845923cb0f02c641de9a2150207289f5bef1776d1b5aa60e4d08917540c3692d48257c1a7b9b12389c31755f715d262f60e756f20 + languageName: node + linkType: hard + +"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 + languageName: node + linkType: hard + +"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.20.0, @babel/plugin-syntax-import-assertions@npm:^7.22.5, @babel/plugin-syntax-import-assertions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0fee0d971f3c654749fdf92e09b6556bba26ab014c8e99b7252f6a7f1ca108f17edd7ceefb5401d7b7008e98ab1b6f8c3c6a5db72862e7c7b2fcd649d000d690 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.22.5, @babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/fe00cdb96fd289ab126830a98e1dcf5ab7b529a6ef1c01a72506b5e7b1197d6e46c3c4d029cd90d1d61eb9a15ef77c282d156d0c02c7e32f168bb09d84150db4 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.25.7, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.25.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/17db499c31fcfaa94d5408726d943955d51d478353d1e2dd84eda6024f7e3d104b9456a77f8aabfae0db7f4dc32f810d08357112f7fcbe305e7c9fcf5b3cac13 + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.25.7, @babel/plugin-syntax-typescript@npm:^7.3.3, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.25.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ed51fd81a5cf571a89fc4cf4c0e3b0b91285c367237374c133d2e5e718f3963cfa61b81997df39220a8837dc99f9e9a8ab7701d259c09fae379e4843d9db60c2 + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.22.5, @babel/plugin-transform-arrow-functions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c8d75ead93f130bf113b6d29493aca695092661ef039336d2a227169c3b7895aa5e9bcc548c42a95a6eaaaf49e512317b00699940bd40ccefd77443e703d3935 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.22.5, @babel/plugin-transform-async-generator-functions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-remap-async-to-generator": "npm:^7.25.7" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/traverse": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/dcdd17d8cafafe0eb2edd0a46a7abe86c72235c957c8eb1157ccadb2b199572d5d1aa36a2d3bce5cb99990f7d3c6290ecf09959c62f3081c4df9ff717a1c84a4 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5" + dependencies: + "@babel/helper-module-imports": "npm:^7.22.5" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-remap-async-to-generator": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2972f22c3a5a56a8b225f4fa1bbdbcf6e989e0da460d5f4e2280652b1433d7c68b6ddc0cc2affc4b59905835133a253a31c24c7ca1bebe1a2f28377d27b4ca1c + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.22.5, @babel/plugin-transform-async-to-generator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.7" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-remap-async-to-generator": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1dbefba9c1455f7a92b8c59a93c622091db945294c936fc2c09b1648308c5b4cb2ecaae92baae0d07a324ab890a8a2ee27ceb046bc120932845d27aede275821 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.22.5, @babel/plugin-transform-block-scoped-functions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b1e77492295d1b271ef850a81b0404cf3d0dd6a2bcbeab28a0fd99e61c6de4bda91dff583bb42138eec61bf71282bdd3b1bebcb53b7e373035e77fd6ba66caeb + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.22.5, @babel/plugin-transform-block-scoping@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b2057e00535cd0e8bd5ee5d4640aa2e952564aeafb1bcf4e7b6de33442422877bb0ca8669ad0a48262ec077271978c61eae87b6b3bc8f472d830fa781d6f7e44 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.7" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1f41e6934b20ad3e05df63959cff9bc600ff3119153b9acbbd44c1731e7df04866397e6e17799173f4c53cdee6115e155632859aee20bf47ec7dcef3f2168a47 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.22.5, @babel/plugin-transform-class-static-block@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-class-static-block@npm:7.25.7" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10c0/cbb4b46cbd8ad10106eb2bedb5a0665661a1d1d5b6f3ab565ff454b802dab4718e02b25670fe0d40835494aedb3dc26757c06cc4da6ff3e80291c5f882269bd3 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.22.5, @babel/plugin-transform-classes@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-classes@npm:7.25.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-replace-supers": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + globals: "npm:^11.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8121781e1d8acd80e6169019106f73a399475ad9c895c1988a344dfed5a6ddd340938ac55123dc1e423bb8f25f255f5d11031116ad756ba3c314595a97c973af + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.22.5, @babel/plugin-transform-computed-properties@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-computed-properties@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7ad0a1c126f50935a02e77d438ebc39078a9d644b3a60de60bec32c5d9f49e7f2b193fcecb8c61bb1bc3cdd4af1e93f72d022d448511fa76a171527c633cd1bf + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.22.5, @babel/plugin-transform-destructuring@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-destructuring@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a563123b2fb267e03aa50104005f00b56226a685938906c42c1b251462e0cc9fc89e587d5656d3324159071eb8ebda8c68a6011f11d5a00fb1436cb5a5411b7b + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.25.7, @babel/plugin-transform-dotall-regex@npm:^7.4.4": + version: 7.25.7 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7f1db3ec20b7fae46db4a9c4c257d75418b0896b72c0a3de20b3044f952801480f0a2e75ebb0d64f13e8cd4db0e49aa42c5c0edff372b23c41679b1ea5dd3ed4 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.22.5, @babel/plugin-transform-duplicate-keys@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b4079981e2db19737a0f1a00254e7388e2d3c01ce36e9fd826e4d86d3c1755339495e29c71fd7c84a068201ec24687328d48f3bf53b32b6d6224f51d9a34da74 + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/e4946090ff6d88d54b78265ee653079ec34c117ac046e22f66f7c4ac44249cdc2dfca385bc5bf4386db668b9948eeb12985589500188bc252e684c7714c31475 + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.22.5, @babel/plugin-transform-dynamic-import@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c733252ff20a32d9747dd081916270f5a073856597e849a5f458b12f4354499b18714f5e7049e341432851d9975077cb37effcd276c7f816faa6f5ff708dc5e1 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5, @babel/plugin-transform-exponentiation-operator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.7" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c8537b9f3cddc5a8d3710f6980196dc7a0f4389f8f82617312a5f7b8b15bcd8ddaeba783c687c3ac6031eb0a4ba0bc380a98da6bf7efe98e225602a98ad42a1e + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.22.5, @babel/plugin-transform-export-namespace-from@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ef61fc5d54c9c8b075cbd9db62beaf295e38e08a1edb1882995105d3e959763be1631f7d7f7cb7461b702ebd0b4a601f2eb2cd6521acaf061310a3a3305fa756 + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.22.5, @babel/plugin-transform-for-of@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-for-of@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/08a37a1742368a422d095c998ed76f60f6bf3f9cc060033be121d803fd2dddc08fe543e48ee49c022bdc9ed80893ca79d084958d83d30684178b088774754277 + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.22.5, @babel/plugin-transform-function-name@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-function-name@npm:7.25.7" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ca98e1116c0ada7211ed43e4b7f21ca15f95bbbdad70f2fbe1ec2d90a97daedf9f22fcb0a25c8b164a5e394f509f2e4d1f7609d26dc938a58d37c5ee9b80088a + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.22.5, @babel/plugin-transform-json-strings@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-json-strings@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/aa6e5f65c8a5f2459d7daa9b5b4ff97ff43bab21f4a8513ed84d35300b0323ec542dc101c5f11622e442dfc93b3a229c7f41ebc7645370dfec6d066bda800a0b + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.22.5, @babel/plugin-transform-literals@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-literals@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c2c2488102f33e566f45becdcb632e53bd052ecfb2879deb07a614b3e9437e3b624c3b16d080096d50b0b622edebd03e438acbf9260bcc41167897963f64560e + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.5, @babel/plugin-transform-logical-assignment-operators@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d610a8a2c1be83e03cce2256f29519e705dc68289c09d67f1f362d1fd80f4b36eaf2affc05710abb53a272895041e24d9e95ec73a516a23a67cb907023fbe37b + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.22.5, @babel/plugin-transform-member-expression-literals@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d6936b98ae4d3daed850dc4e064042ea4375f815219ba9d8591373bf1fba4cfdb5be42623ae8882f2d666cc34af650a4855e2a5ad89e3c235d73a6f172f9969c + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.22.5, @babel/plugin-transform-modules-amd@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-modules-amd@npm:7.25.7" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c0bc999206c3834c090e6559a6c8a55d7672d3573104e832223ebe7df99bd1b82fc850e15ba32f512c84b0db1cdb613b66fa60abe9abb9c7e8dcbff91649b356 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.22.5, @babel/plugin-transform-modules-commonjs@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.7" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-simple-access": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2f1c945fc3c9b690b0ddcf2c80156b2e4fbf2cf15aac43ac8fe6e4b34125869528839a53d07c564e62e4aed394ebdc1d2c3b796b547374455522581c11b7599c + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.22.5, @babel/plugin-transform-modules-systemjs@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.7" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95eaea7082636710c61e49e58b3907e85ec79db4327411d3784f28592509fbe94a53cc3d20a36a1cf245efc6d3f0017eae15b45ffd645c1ab949bb4e1670e6bb + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.22.5, @babel/plugin-transform-modules-umd@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-modules-umd@npm:7.25.7" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8849ab04eecdb73cd37e2d7289449fa5256331832b0304c220b2a6aaa12e2d2dd87684f2813412d1fc5bdb3d6b55cc08c6386d3273fe05a65177c09bee5b6769 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/eb55fec55dc930cd122911f3e4a421320fa8b1b4de85bfd7ef11b46c611ec69b0213c114a6e1c6bc224d6b954ff183a0caa7251267d5258ecc0f00d6d9ca1d52 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.22.5, @babel/plugin-transform-new-target@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-new-target@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8e5dce6d027e0f3fd394578ea1af7f515de157793a15c23a5aad7034a6d8a4005ef280238e67a232bb4dd4fafd3a264fed462deb149128ddd9ce59ff6f575cff + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.5, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b35a96a79ef4895b00e4f758d3185cb17e4fbfada311894ad5f0988a55fc2c21820dc789b26a3cb8fbd620434faa516e52acb6e2da105c2edbd29de8b6b0facf + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.22.5, @babel/plugin-transform-numeric-separator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c028ae89e6b4e1d757f8f1ebcb3b420e6559bb35002728f6f5651d5f669fbf73764adf6e3597908fa12adf8dbae683e5f74b3a7f68e8774a9663c18c0f999539 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.22.5, @babel/plugin-transform-object-rest-spread@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.7" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-transform-parameters": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e8b978d9d1020452da0d5d92f80fe57e302761dac20137bb8bf863478a4779fcd63d314db89e796125d9d76da2a38f64f012d6e0c4913815951b3eb3fba2feb6 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.22.5, @babel/plugin-transform-object-super@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-object-super@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-replace-supers": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7f2968d4da997101b63fd3b74445c9b16f56bd32cd8a0a16c368af9d3e983e7675c1b05d18601f32307cb06e7d884ee11d13ff18a1f6830c0db243a9a852afab + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.22.5, @babel/plugin-transform-optional-catch-binding@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bb609e5103780be0825a255ffe1fefbb5335aead88a46eecc2257053279ea2c45ff66b0ef1fb54302c8c8c57146e88e52f3ecb62b4c6f619218d7b3843b352d9 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.22.5, @babel/plugin-transform-optional-chaining@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/887441ada6c2bc1b789984b7531d9bc585f335ece99642886d3d9fd8aee7e6b8d4f7ca61d76b5f23477f3aa607284d5056eadaa1eb17e7b39af6b0e834cbe878 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.22.5, @babel/plugin-transform-parameters@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-parameters@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b40ba70278842ce1e800d7ab400df730994941550da547ef453780023bd61a9b8acf4b9fb8419c1b5bcbe09819a1146ff59369db11db07eb71870bef86a12422 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.22.5, @babel/plugin-transform-private-methods@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-private-methods@npm:7.25.7" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/92e076f63f7c4696e1321dafdd56c4212eb41784cdadba0ebc39091f959a76d357c3df61a6c668be81d6b6ad8964ee458e85752ab0c6cfbbaf2066903edda732 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.22.5, @babel/plugin-transform-private-property-in-object@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5ad8832ba54e2079c1f558b8680e170265e3f376424e5fbb75b17b7f08696fb0af6c96d23d92f7df3dcc559f5971a02587281fcec38a853174aa95478565f5fc + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.22.5, @babel/plugin-transform-property-literals@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-property-literals@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6d5bccdc772207906666ad5201bd91e4e132e1d806dbcf4163a1d08e18c57cc3795578c4e10596514bcd6afaf9696f478ea4f0dea890176d93b9cb077b9e5c55 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-constant-elements@npm:^7.14.5": + version: 7.25.7 + resolution: "@babel/plugin-transform-react-constant-elements@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2261a793e65b4236ac256096ee8ad40e1149b4202d3d5d4464ca92e87980bc1886ccb2fe1282e668c82fd49db2afadfcea6e943a75fbe56ceb58c33245bac0dc + languageName: node + linkType: hard + +"@babel/plugin-transform-react-display-name@npm:^7.16.7, @babel/plugin-transform-react-display-name@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-react-display-name@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a0c537cc7c328ed7468d3b6a37bf0d9cb15d94afcdf3f2849ce6e5a68494fc61f0fa4fc529482a6b95b00f3c5c734f310bf18085293bff40702789f06c816f36 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-development@npm:^7.16.7, @babel/plugin-transform-react-jsx-development@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.7" + dependencies: + "@babel/plugin-transform-react-jsx": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a3dc14644d09a6d22875af7b5584393ab53e467e0531cd192fc6242504dacaffa421e89265ba7f84fd4edef2b7b100d2e2ebf092a4dce2b55cf9c5fe29390c18 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.16.7, @babel/plugin-transform-react-jsx@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-jsx": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6766b0357b8bbfcb77fca5350f06cf822c89bbe75ddcaea24614601ef23957504da24e76597d743038ce8fa081373b0663c8ad0c86d7c7226e8185f0680b8b56 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-pure-annotations@npm:^7.16.7, @babel/plugin-transform-react-pure-annotations@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d92c9b511850fb6dea71966a0d4f313d67e317db7fc3633a7ff2e27d6df2e95cbc91c4c25abdb6c8db651fcda842a0cb7433835a8a9d4a3fdc5d452068428101 + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.22.5, @babel/plugin-transform-regenerator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-regenerator@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + regenerator-transform: "npm:^0.15.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7ee3a57c4050bc908ef7ac392d810826b294970a7182f4ec34a8ca93dbe36deb21bc862616d46a6f3d881d6b5749930e1679e875b638a00866d844a4250df212 + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.22.5, @babel/plugin-transform-reserved-words@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-reserved-words@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/920c98130daff6c1288fb13a9a2d2e45863bba93e619cb88d90e1f5b5cb358a3ee8880a425a3adb1b4bd5dbb6bd0500eea3370fc612633045eec851b08cc586c + languageName: node + linkType: hard + +"@babel/plugin-transform-runtime@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-runtime@npm:7.22.5" + dependencies: + "@babel/helper-module-imports": "npm:^7.22.5" + "@babel/helper-plugin-utils": "npm:^7.22.5" + babel-plugin-polyfill-corejs2: "npm:^0.4.3" + babel-plugin-polyfill-corejs3: "npm:^0.8.1" + babel-plugin-polyfill-regenerator: "npm:^0.5.0" + semver: "npm:^6.3.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2dcd59bbf14622c2cc088a311a16073b777e34abe733a940c4df6d48fd58900fb7cb22aa2a4645939162cc717618f8e55e96c227ad61f9ae9bca098078aa7345 + languageName: node + linkType: hard + +"@babel/plugin-transform-runtime@npm:^7.15.0": + version: 7.25.7 + resolution: "@babel/plugin-transform-runtime@npm:7.25.7" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + babel-plugin-polyfill-corejs2: "npm:^0.4.10" + babel-plugin-polyfill-corejs3: "npm:^0.10.6" + babel-plugin-polyfill-regenerator: "npm:^0.6.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9b2514e9079361ac8e7e500ffd522dad869d61a3894302da7e29bbac80de00276c8a1b4394d1dcf0b51c57b2c854919928df9648be336139fdf1d6ecd6d1bb32 + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.22.5, @babel/plugin-transform-shorthand-properties@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4250f89a0072f0f400be7a2e3515227b8e2518737899bd57d497e5173284a0e05d812e4a3c219ffcd484e9fa9a01c19fce5acd77bbb898f4d594512c56701eb4 + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.22.5, @babel/plugin-transform-spread@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-spread@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/258bd1b52388cd7425d0ae25fa39538734f7540ea503a1d8a72211d33f6f214cb4e3b73d6cd03016cbcff5d41169f1e578b9ea331965ad224d223591983e90a7 + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.22.5, @babel/plugin-transform-sticky-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0e466cfc3ca1e0db4bb11eb630215b0e1f43066d7678325e5ddadcf5a118b2351a528f67205729c32ac5b78ab68ab7f40517dd33bcb1fb6b456509f5f54ce097 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.22.5, @babel/plugin-transform-template-literals@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-template-literals@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a3455303b6841cb536ac66d1a2d03c194b9f371519482d8d1e8edbd33bf5ca7cdd5db1586b2b0ea5f909ebf74a0eafacf0fb28d257e4905445282dcdccfa6139 + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.22.5, @babel/plugin-transform-typeof-symbol@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ce1a0744a900b05de1372a70508c4148f17eb941c482da26eb369b9f0347570dce45470c8a86d907bc3a0443190344da1e18489ecfecb30388ab6178e8a9916b + languageName: node + linkType: hard + +"@babel/plugin-transform-typescript@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-typescript@npm:7.25.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/plugin-syntax-typescript": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5fa839b9560221698edff5e00b5cccc658c7875efaa7971c66d478f5b026770f12dd47b1be024463a44f9e29b4e14e8ddddbf4a2b324b0b94f58370dd5ae7195 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.22.5, @babel/plugin-transform-unicode-escapes@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8b1f71fda0a832c6e26ba4c00f99e9033e6f9b36ced542a512921f4ad861a70e2fec2bd54a91a5ca2efa46aaa8c8893e4c602635c4ef172bd3ed6eef3178c70b + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5, @babel/plugin-transform-unicode-property-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b4bfcf7529138d00671bf5cdfe606603d52cfe57ec1be837da57683f404fc0b0c171834a02515eb03379e5c806121866d097b90e31cb437d21d0ea59368ad82b + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.22.5, @babel/plugin-transform-unicode-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/73ae34c02ea8b7ac7e4efa690f8c226089c074e3fef658d2a630ad898a93550d84146ce05e073c271c8b2bbba61cbbfd5a2002a7ea940dcad3274e5b5dcb6bcf + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5, @babel/plugin-transform-unicode-sets-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.7" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/39e45ae3db7adfc3457b1d6ba5608ffbace957ad019785967e5357a6639f261765bda12363f655d39265f5a2834af26327037751420191d0b73152ccc7ce3c35 + languageName: node + linkType: hard + +"@babel/preset-env@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/preset-env@npm:7.22.5" + dependencies: + "@babel/compat-data": "npm:^7.22.5" + "@babel/helper-compilation-targets": "npm:^7.22.5" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.22.5" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.22.5" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" + "@babel/plugin-syntax-import-assertions": "npm:^7.22.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.22.5" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.22.5" + "@babel/plugin-transform-async-generator-functions": "npm:^7.22.5" + "@babel/plugin-transform-async-to-generator": "npm:^7.22.5" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.22.5" + "@babel/plugin-transform-block-scoping": "npm:^7.22.5" + "@babel/plugin-transform-class-properties": "npm:^7.22.5" + "@babel/plugin-transform-class-static-block": "npm:^7.22.5" + "@babel/plugin-transform-classes": "npm:^7.22.5" + "@babel/plugin-transform-computed-properties": "npm:^7.22.5" + "@babel/plugin-transform-destructuring": "npm:^7.22.5" + "@babel/plugin-transform-dotall-regex": "npm:^7.22.5" + "@babel/plugin-transform-duplicate-keys": "npm:^7.22.5" + "@babel/plugin-transform-dynamic-import": "npm:^7.22.5" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.22.5" + "@babel/plugin-transform-export-namespace-from": "npm:^7.22.5" + "@babel/plugin-transform-for-of": "npm:^7.22.5" + "@babel/plugin-transform-function-name": "npm:^7.22.5" + "@babel/plugin-transform-json-strings": "npm:^7.22.5" + "@babel/plugin-transform-literals": "npm:^7.22.5" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.22.5" + "@babel/plugin-transform-member-expression-literals": "npm:^7.22.5" + "@babel/plugin-transform-modules-amd": "npm:^7.22.5" + "@babel/plugin-transform-modules-commonjs": "npm:^7.22.5" + "@babel/plugin-transform-modules-systemjs": "npm:^7.22.5" + "@babel/plugin-transform-modules-umd": "npm:^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.22.5" + "@babel/plugin-transform-new-target": "npm:^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.22.5" + "@babel/plugin-transform-numeric-separator": "npm:^7.22.5" + "@babel/plugin-transform-object-rest-spread": "npm:^7.22.5" + "@babel/plugin-transform-object-super": "npm:^7.22.5" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.22.5" + "@babel/plugin-transform-optional-chaining": "npm:^7.22.5" + "@babel/plugin-transform-parameters": "npm:^7.22.5" + "@babel/plugin-transform-private-methods": "npm:^7.22.5" + "@babel/plugin-transform-private-property-in-object": "npm:^7.22.5" + "@babel/plugin-transform-property-literals": "npm:^7.22.5" + "@babel/plugin-transform-regenerator": "npm:^7.22.5" + "@babel/plugin-transform-reserved-words": "npm:^7.22.5" + "@babel/plugin-transform-shorthand-properties": "npm:^7.22.5" + "@babel/plugin-transform-spread": "npm:^7.22.5" + "@babel/plugin-transform-sticky-regex": "npm:^7.22.5" + "@babel/plugin-transform-template-literals": "npm:^7.22.5" + "@babel/plugin-transform-typeof-symbol": "npm:^7.22.5" + "@babel/plugin-transform-unicode-escapes": "npm:^7.22.5" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.22.5" + "@babel/plugin-transform-unicode-regex": "npm:^7.22.5" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.22.5" + "@babel/preset-modules": "npm:^0.1.5" + "@babel/types": "npm:^7.22.5" + babel-plugin-polyfill-corejs2: "npm:^0.4.3" + babel-plugin-polyfill-corejs3: "npm:^0.8.1" + babel-plugin-polyfill-regenerator: "npm:^0.5.0" + core-js-compat: "npm:^3.30.2" + semver: "npm:^6.3.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/dd2b70e96102fc2a64f57c3ab177abeb5aac3f71f47701787b6264d91d7d3ea3d38526d8e1133eb667ca88e87c997ed4a1b8d498ca8be2af07ae4995dfac1b83 + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.15.0, @babel/preset-env@npm:^7.15.6": + version: 7.25.7 + resolution: "@babel/preset-env@npm:7.25.7" + dependencies: + "@babel/compat-data": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.7" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.7" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" + "@babel/plugin-syntax-import-assertions": "npm:^7.25.7" + "@babel/plugin-syntax-import-attributes": "npm:^7.25.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.25.7" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.7" + "@babel/plugin-transform-async-to-generator": "npm:^7.25.7" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.25.7" + "@babel/plugin-transform-block-scoping": "npm:^7.25.7" + "@babel/plugin-transform-class-properties": "npm:^7.25.7" + "@babel/plugin-transform-class-static-block": "npm:^7.25.7" + "@babel/plugin-transform-classes": "npm:^7.25.7" + "@babel/plugin-transform-computed-properties": "npm:^7.25.7" + "@babel/plugin-transform-destructuring": "npm:^7.25.7" + "@babel/plugin-transform-dotall-regex": "npm:^7.25.7" + "@babel/plugin-transform-duplicate-keys": "npm:^7.25.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.7" + "@babel/plugin-transform-dynamic-import": "npm:^7.25.7" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.25.7" + "@babel/plugin-transform-export-namespace-from": "npm:^7.25.7" + "@babel/plugin-transform-for-of": "npm:^7.25.7" + "@babel/plugin-transform-function-name": "npm:^7.25.7" + "@babel/plugin-transform-json-strings": "npm:^7.25.7" + "@babel/plugin-transform-literals": "npm:^7.25.7" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.7" + "@babel/plugin-transform-member-expression-literals": "npm:^7.25.7" + "@babel/plugin-transform-modules-amd": "npm:^7.25.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.7" + "@babel/plugin-transform-modules-systemjs": "npm:^7.25.7" + "@babel/plugin-transform-modules-umd": "npm:^7.25.7" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.7" + "@babel/plugin-transform-new-target": "npm:^7.25.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.7" + "@babel/plugin-transform-numeric-separator": "npm:^7.25.7" + "@babel/plugin-transform-object-rest-spread": "npm:^7.25.7" + "@babel/plugin-transform-object-super": "npm:^7.25.7" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.7" + "@babel/plugin-transform-parameters": "npm:^7.25.7" + "@babel/plugin-transform-private-methods": "npm:^7.25.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.25.7" + "@babel/plugin-transform-property-literals": "npm:^7.25.7" + "@babel/plugin-transform-regenerator": "npm:^7.25.7" + "@babel/plugin-transform-reserved-words": "npm:^7.25.7" + "@babel/plugin-transform-shorthand-properties": "npm:^7.25.7" + "@babel/plugin-transform-spread": "npm:^7.25.7" + "@babel/plugin-transform-sticky-regex": "npm:^7.25.7" + "@babel/plugin-transform-template-literals": "npm:^7.25.7" + "@babel/plugin-transform-typeof-symbol": "npm:^7.25.7" + "@babel/plugin-transform-unicode-escapes": "npm:^7.25.7" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.25.7" + "@babel/plugin-transform-unicode-regex": "npm:^7.25.7" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.7" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.10" + babel-plugin-polyfill-corejs3: "npm:^0.10.6" + babel-plugin-polyfill-regenerator: "npm:^0.6.1" + core-js-compat: "npm:^3.38.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bf704a06a69420250c1de2b126cd5c859a851002c2fb2cce0910cd85a8e6755b9b31577021e94feb7e1e53519923726349aaf07580923928791583db61438fb8 + languageName: node + linkType: hard + +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/types": "npm:^7.4.4" + esutils: "npm:^2.0.2" + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 + languageName: node + linkType: hard + +"@babel/preset-modules@npm:^0.1.5": + version: 0.1.6 + resolution: "@babel/preset-modules@npm:0.1.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/plugin-proposal-unicode-property-regex": "npm:^7.4.4" + "@babel/plugin-transform-dotall-regex": "npm:^7.4.4" + "@babel/types": "npm:^7.4.4" + esutils: "npm:^2.0.2" + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/6397d196dec1ca91f0f28ea4fbd0e599e5724b7f783f27979e1e9de30a4693f8c1fa98495d542fe5a774b5d0d9b52c6effd2ed15900e879ebcb0488c4bf0eed9 + languageName: node + linkType: hard + +"@babel/preset-react@npm:7.16.7": + version: 7.16.7 + resolution: "@babel/preset-react@npm:7.16.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.16.7" + "@babel/helper-validator-option": "npm:^7.16.7" + "@babel/plugin-transform-react-display-name": "npm:^7.16.7" + "@babel/plugin-transform-react-jsx": "npm:^7.16.7" + "@babel/plugin-transform-react-jsx-development": "npm:^7.16.7" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.16.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b104190241eb712bf97c0095b64c0de4e07c4964fc2e87647023baba1902691ae87a1bbcad0799b5a24dc9fa4d38c7807df249ee942b6b338a3920bcf04fea0f + languageName: node + linkType: hard + +"@babel/preset-react@npm:^7.14.5": + version: 7.25.7 + resolution: "@babel/preset-react@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + "@babel/plugin-transform-react-display-name": "npm:^7.25.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.7" + "@babel/plugin-transform-react-jsx-development": "npm:^7.25.7" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b133b1a2f46c70a337d8b1ef442e09e3dbdaecb0d6bed8f1cb64dfddc31c16e248b017385ab909caeebd8462111c9c0e1c5409deb10f2be5cb5bcfdaa4d27718 + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.15.0, @babel/preset-typescript@npm:^7.18.6": + version: 7.25.7 + resolution: "@babel/preset-typescript@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + "@babel/plugin-syntax-jsx": "npm:^7.25.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.7" + "@babel/plugin-transform-typescript": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8dc1258e3c5230bbe42ff9811f08924509238e6bd32fa0b7b0c0a6c5e1419512a8e1f733e1b114454d367b7c164beca2cf33acf2ed9e0d99be010c1c5cdbef0c + languageName: node + linkType: hard + +"@babel/runtime-corejs3@npm:^7.10.2": + version: 7.25.7 + resolution: "@babel/runtime-corejs3@npm:7.25.7" + dependencies: + core-js-pure: "npm:^3.30.2" + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/37217edf5f02c0e7ccb78af380b26b06dadc9b031a1bcec22a9cfb540d85470b61ebe1e5cd7e32689a6c0f786015c2ee1a73a16852574c3a46341105e457a87c + languageName: node + linkType: hard + +"@babel/runtime@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/runtime@npm:7.22.5" + dependencies: + regenerator-runtime: "npm:^0.13.11" + checksum: 10c0/11dcaeecd2246857ccf22f939fcae28a58d29e410607bfa28b95d9b03e298a3e3df8a530e22637d5bfccfc1661fb39cc50c06b404b5d53454bd93889c7dd3eb8 + languageName: node + linkType: hard + +"@babel/runtime@npm:7.24.8": + version: 7.24.8 + resolution: "@babel/runtime@npm:7.24.8" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/f24b30af6b3ecae19165b3b032f9bc37b2d1769677bd63b69a6f81061967cfc847aa822518402ea6616b1d301d7eb46986b99c9f69cdb5880834fca2e6b34881 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.18.9, @babel/runtime@npm:^7.19.4, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": + version: 7.25.7 + resolution: "@babel/runtime@npm:7.25.7" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/86b7829d2fc9343714a9afe92757cf96c4dc799006ca61d73cda62f4b9e29bfa1ce36794955bc6cb4c188f5b10db832c949339895e1bbe81a69022d9d578ce29 + languageName: node + linkType: hard + +"@babel/template@npm:7.22.5": + version: 7.22.5 + resolution: "@babel/template@npm:7.22.5" + dependencies: + "@babel/code-frame": "npm:^7.22.5" + "@babel/parser": "npm:^7.22.5" + "@babel/types": "npm:^7.22.5" + checksum: 10c0/dd8fc1b0bfe0128bace25da0e0a708e26320e8030322d3a53bb6366f199b46a277bfa4281dd370d73ab19087c7e27d166070a0659783b4715f7470448c7342b1 + languageName: node + linkType: hard + +"@babel/template@npm:^7.22.5, @babel/template@npm:^7.25.7, @babel/template@npm:^7.3.3": + version: 7.25.7 + resolution: "@babel/template@npm:7.25.7" + dependencies: + "@babel/code-frame": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/8ae9e36e4330ee83d4832531d1d9bec7dc2ef6a2a8afa1ef1229506fd60667abcb17f306d1c3d7e582251270597022990c845d5d69e7add70a5aea66720decb9 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/traverse@npm:7.25.7" + dependencies: + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/75d73e52c507a7a7a4c7971d6bf4f8f26fdd094e0d3a0193d77edf6a5efa36fc3db91ec5cc48e8b94e6eb5d5ad21af0a1040e71309172851209415fd105efb1a + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.25.7 + resolution: "@babel/types@npm:7.25.7" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/e03e1e2e08600fa1e8eb90632ac9c253dd748176c8d670d85f85b0dc83a0573b26ae748a1cbcb81f401903a3d95f43c3f4f8d516a5ed779929db27de56289633 + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + +"@chainsafe/is-ip@npm:^2.0.1": + version: 2.0.2 + resolution: "@chainsafe/is-ip@npm:2.0.2" + checksum: 10c0/0bb8b9d0babe583642d31ffafad603ac5e5dc48884266feae57479d81f4e81ef903628527d81b39d5305657a957bf435bd2ef38b98a4526a7aab366febf793ad + languageName: node + linkType: hard + +"@chainsafe/netmask@npm:^2.0.0": + version: 2.0.0 + resolution: "@chainsafe/netmask@npm:2.0.0" + dependencies: + "@chainsafe/is-ip": "npm:^2.0.1" + checksum: 10c0/a9069e52b0a1470b00c88d3fb16ff4fe14274e5055770faab974b29f7bc69ebf76172775461da1e88b7fe73539a9228f6af0406253d46e987193ddf21a073da1 + languageName: node + linkType: hard + +"@coinbase/wallet-sdk@npm:4.0.4": + version: 4.0.4 + resolution: "@coinbase/wallet-sdk@npm:4.0.4" + dependencies: + buffer: "npm:^6.0.3" + clsx: "npm:^1.2.1" + eventemitter3: "npm:^5.0.1" + keccak: "npm:^3.0.3" + preact: "npm:^10.16.0" + sha.js: "npm:^2.4.11" + checksum: 10c0/7c8c39688c144b5305ac59d847023f7dce9ccffdd8ed6fdcc690c03980ce7cf8f88caff4e0cf0a1f081bcfd61ebe6a590970771505f86700f9b798a0e8e2dc88 + languageName: node + linkType: hard + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 + languageName: node + linkType: hard + +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 + languageName: node + linkType: hard + +"@cypress/request@npm:^2.88.10": + version: 2.88.12 + resolution: "@cypress/request@npm:2.88.12" + dependencies: + aws-sign2: "npm:~0.7.0" + aws4: "npm:^1.8.0" + caseless: "npm:~0.12.0" + combined-stream: "npm:~1.0.6" + extend: "npm:~3.0.2" + forever-agent: "npm:~0.6.1" + form-data: "npm:~2.3.2" + http-signature: "npm:~1.3.6" + is-typedarray: "npm:~1.0.0" + isstream: "npm:~0.1.2" + json-stringify-safe: "npm:~5.0.1" + mime-types: "npm:~2.1.19" + performance-now: "npm:^2.1.0" + qs: "npm:~6.10.3" + safe-buffer: "npm:^5.1.2" + tough-cookie: "npm:^4.1.3" + tunnel-agent: "npm:^0.6.0" + uuid: "npm:^8.3.2" + checksum: 10c0/815d56db900d63479a7385f1f76d583f1fea6181499ed8abd54aec477423b03202e1155389e0035c3ec29852a0cce39c21629f358b604f604d4653b6d0ce9d52 + languageName: node + linkType: hard + +"@cypress/xvfb@npm:^1.2.4": + version: 1.2.4 + resolution: "@cypress/xvfb@npm:1.2.4" + dependencies: + debug: "npm:^3.1.0" + lodash.once: "npm:^4.1.1" + checksum: 10c0/1bf6224b244f6093033d77f04f6bef719280542656de063cf8ac3f38957b62aa633e6918af0b9673a8bf0123b42a850db51d9729a3ae3da885ac179bc7fc1d26 + languageName: node + linkType: hard + +"@discoveryjs/json-ext@npm:0.5.7": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 10c0/e10f1b02b78e4812646ddf289b7d9f2cb567d336c363b266bd50cd223cf3de7c2c74018d91cd2613041568397ef3a4a2b500aba588c6e5bd78c38374ba68f38c + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/aix-ppc64@npm:0.24.0" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/android-arm64@npm:0.17.19" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-arm64@npm:0.24.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/android-arm@npm:0.17.19" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-arm@npm:0.24.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/android-x64@npm:0.17.19" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-x64@npm:0.24.0" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/darwin-arm64@npm:0.17.19" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/darwin-arm64@npm:0.24.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/darwin-x64@npm:0.17.19" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/darwin-x64@npm:0.24.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/freebsd-arm64@npm:0.17.19" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/freebsd-arm64@npm:0.24.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/freebsd-x64@npm:0.17.19" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/freebsd-x64@npm:0.24.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/linux-arm64@npm:0.17.19" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-arm64@npm:0.24.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/linux-arm@npm:0.17.19" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-arm@npm:0.24.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/linux-ia32@npm:0.17.19" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-ia32@npm:0.24.0" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/linux-loong64@npm:0.17.19" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-loong64@npm:0.24.0" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/linux-mips64el@npm:0.17.19" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-mips64el@npm:0.24.0" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/linux-ppc64@npm:0.17.19" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-ppc64@npm:0.24.0" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/linux-riscv64@npm:0.17.19" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-riscv64@npm:0.24.0" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/linux-s390x@npm:0.17.19" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-s390x@npm:0.24.0" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/linux-x64@npm:0.17.19" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-x64@npm:0.24.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/netbsd-x64@npm:0.17.19" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/netbsd-x64@npm:0.24.0" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/openbsd-arm64@npm:0.24.0" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/openbsd-x64@npm:0.17.19" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/openbsd-x64@npm:0.24.0" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/sunos-x64@npm:0.17.19" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/sunos-x64@npm:0.24.0" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/win32-arm64@npm:0.17.19" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-arm64@npm:0.24.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/win32-ia32@npm:0.17.19" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-ia32@npm:0.24.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.17.19": + version: 0.17.19 + resolution: "@esbuild/win32-x64@npm:0.17.19" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-x64@npm:0.24.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" + dependencies: + eslint-visitor-keys: "npm:^3.3.0" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.4.0": + version: 4.11.1 + resolution: "@eslint-community/regexpp@npm:4.11.1" + checksum: 10c0/fbcc1cb65ef5ed5b92faa8dc542e035269065e7ebcc0b39c81a4fe98ad35cfff20b3c8df048641de15a7757e07d69f85e2579c1a5055f993413ba18c055654f8 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^1.2.3": + version: 1.4.1 + resolution: "@eslint/eslintrc@npm:1.4.1" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.4.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/1030e1a4a355f8e4629e19d3d45448a05a8e65ecf49154bebc66599d038f155e830498437cbfc7246e8084adc1f814904f696c2461707cc8c73be961e2e8ae5a + languageName: node + linkType: hard + +"@ethereumjs/common@npm:^3.2.0": + version: 3.2.0 + resolution: "@ethereumjs/common@npm:3.2.0" + dependencies: + "@ethereumjs/util": "npm:^8.1.0" + crc-32: "npm:^1.2.0" + checksum: 10c0/4e2256eb54cc544299f4d7ebc9daab7a3613c174de3981ea5ed84bd10c41a03d013d15b1abad292da62fd0c4b8ce5b220a258a25861ccffa32f2cc9a8a4b25d8 + languageName: node + linkType: hard + +"@ethereumjs/rlp@npm:^4.0.1": + version: 4.0.1 + resolution: "@ethereumjs/rlp@npm:4.0.1" + bin: + rlp: bin/rlp + checksum: 10c0/78379f288e9d88c584c2159c725c4a667a9742981d638bad760ed908263e0e36bdbd822c0a902003e0701195fd1cbde7adad621cd97fdfbf552c45e835ce022c + languageName: node + linkType: hard + +"@ethereumjs/tx@npm:^4.1.2, @ethereumjs/tx@npm:^4.2.0": + version: 4.2.0 + resolution: "@ethereumjs/tx@npm:4.2.0" + dependencies: + "@ethereumjs/common": "npm:^3.2.0" + "@ethereumjs/rlp": "npm:^4.0.1" + "@ethereumjs/util": "npm:^8.1.0" + ethereum-cryptography: "npm:^2.0.0" + checksum: 10c0/f168303edf5970673db06d2469a899632c64ba0cd5d24480e97683bd0e19cc22a7b0a7bc7db3a49760f09826d4c77bed89b65d65252daf54857dd3d97324fb9a + languageName: node + linkType: hard + +"@ethereumjs/util@npm:^8.1.0": + version: 8.1.0 + resolution: "@ethereumjs/util@npm:8.1.0" + dependencies: + "@ethereumjs/rlp": "npm:^4.0.1" + ethereum-cryptography: "npm:^2.0.0" + micro-ftch: "npm:^0.3.1" + checksum: 10c0/4e6e0449236f66b53782bab3b387108f0ddc050835bfe1381c67a7c038fea27cb85ab38851d98b700957022f0acb6e455ca0c634249cfcce1a116bad76500160 + languageName: node + linkType: hard + +"@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/abi@npm:5.7.0" + dependencies: + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/7de51bf52ff03df2526546dacea6e74f15d4c5ef762d931552082b9600dcefd8e333599f02d7906ba89f7b7f48c45ab72cee76f397212b4f17fa9d9ff5615916 + languageName: node + linkType: hard + +"@ethersproject/abstract-provider@npm:5.7.0, @ethersproject/abstract-provider@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/abstract-provider@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/networks": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/web": "npm:^5.7.0" + checksum: 10c0/a5708e2811b90ddc53d9318ce152511a32dd4771aa2fb59dbe9e90468bb75ca6e695d958bf44d13da684dc3b6aab03f63d425ff7591332cb5d7ddaf68dff7224 + languageName: node + linkType: hard + +"@ethersproject/abstract-signer@npm:5.7.0, @ethersproject/abstract-signer@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/abstract-signer@npm:5.7.0" + dependencies: + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + checksum: 10c0/e174966b3be17269a5974a3ae5eef6d15ac62ee8c300ceace26767f218f6bbf3de66f29d9a9c9ca300fa8551aab4c92e28d2cc772f5475fdeaa78d9b5be0e745 + languageName: node + linkType: hard + +"@ethersproject/address@npm:5.7.0, @ethersproject/address@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/address@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/rlp": "npm:^5.7.0" + checksum: 10c0/db5da50abeaae8f6cf17678323e8d01cad697f9a184b0593c62b71b0faa8d7e5c2ba14da78a998d691773ed6a8eb06701f65757218e0eaaeb134e5c5f3e5a908 + languageName: node + linkType: hard + +"@ethersproject/base64@npm:5.7.0, @ethersproject/base64@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/base64@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + checksum: 10c0/4f748cd82af60ff1866db699fbf2bf057feff774ea0a30d1f03ea26426f53293ea10cc8265cda1695301da61093bedb8cc0d38887f43ed9dad96b78f19d7337e + languageName: node + linkType: hard + +"@ethersproject/basex@npm:5.7.0, @ethersproject/basex@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/basex@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + checksum: 10c0/02304de77477506ad798eb5c68077efd2531624380d770ef4a823e631a288fb680107a0f9dc4a6339b2a0b0f5b06ee77f53429afdad8f950cde0f3e40d30167d + languageName: node + linkType: hard + +"@ethersproject/bignumber@npm:5.7.0, @ethersproject/bignumber@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/bignumber@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + bn.js: "npm:^5.2.1" + checksum: 10c0/14263cdc91a7884b141d9300f018f76f69839c47e95718ef7161b11d2c7563163096fee69724c5fa8ef6f536d3e60f1c605819edbc478383a2b98abcde3d37b2 + languageName: node + linkType: hard + +"@ethersproject/bytes@npm:5.7.0, @ethersproject/bytes@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/bytes@npm:5.7.0" + dependencies: + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/07dd1f0341b3de584ef26c8696674ff2bb032f4e99073856fc9cd7b4c54d1d846cabe149e864be267934658c3ce799e5ea26babe01f83af0e1f06c51e5ac791f + languageName: node + linkType: hard + +"@ethersproject/constants@npm:5.7.0, @ethersproject/constants@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/constants@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + checksum: 10c0/6df63ab753e152726b84595250ea722165a5744c046e317df40a6401f38556385a37c84dadf5b11ca651c4fb60f967046125369c57ac84829f6b30e69a096273 + languageName: node + linkType: hard + +"@ethersproject/contracts@npm:5.7.0": + version: 5.7.0 + resolution: "@ethersproject/contracts@npm:5.7.0" + dependencies: + "@ethersproject/abi": "npm:^5.7.0" + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + checksum: 10c0/97a10361dddaccfb3e9e20e24d071cfa570050adcb964d3452c5f7c9eaaddb4e145ec9cf928e14417948701b89e81d4907800e799a6083123e4d13a576842f41 + languageName: node + linkType: hard + +"@ethersproject/hash@npm:5.7.0, @ethersproject/hash@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/hash@npm:5.7.0" + dependencies: + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/base64": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/1a631dae34c4cf340dde21d6940dd1715fc7ae483d576f7b8ef9e8cb1d0e30bd7e8d30d4a7d8dc531c14164602323af2c3d51eb2204af18b2e15167e70c9a5ef + languageName: node + linkType: hard + +"@ethersproject/hdnode@npm:5.7.0, @ethersproject/hdnode@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/hdnode@npm:5.7.0" + dependencies: + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/basex": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/pbkdf2": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + "@ethersproject/signing-key": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/wordlists": "npm:^5.7.0" + checksum: 10c0/36d5c13fe69b1e0a18ea98537bc560d8ba166e012d63faac92522a0b5f405eb67d8848c5aca69e2470f62743aaef2ac36638d9e27fd8c68f51506eb61479d51d + languageName: node + linkType: hard + +"@ethersproject/json-wallets@npm:5.7.0, @ethersproject/json-wallets@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/json-wallets@npm:5.7.0" + dependencies: + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/hdnode": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/pbkdf2": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/random": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + aes-js: "npm:3.0.0" + scrypt-js: "npm:3.0.1" + checksum: 10c0/f1a84d19ff38d3506f453abc4702107cbc96a43c000efcd273a056371363767a06a8d746f84263b1300266eb0c329fe3b49a9b39a37aadd016433faf9e15a4bb + languageName: node + linkType: hard + +"@ethersproject/keccak256@npm:5.7.0, @ethersproject/keccak256@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/keccak256@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + js-sha3: "npm:0.8.0" + checksum: 10c0/3b1a91706ff11f5ab5496840b9c36cedca27db443186d28b94847149fd16baecdc13f6fc5efb8359506392f2aba559d07e7f9c1e17a63f9d5de9f8053cfcb033 + languageName: node + linkType: hard + +"@ethersproject/logger@npm:5.7.0, @ethersproject/logger@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/logger@npm:5.7.0" + checksum: 10c0/d03d460fb2d4a5e71c627b7986fb9e50e1b59a6f55e8b42a545b8b92398b961e7fd294bd9c3d8f92b35d0f6ff9d15aa14c95eab378f8ea194e943c8ace343501 + languageName: node + linkType: hard + +"@ethersproject/networks@npm:5.7.1, @ethersproject/networks@npm:^5.7.0": + version: 5.7.1 + resolution: "@ethersproject/networks@npm:5.7.1" + dependencies: + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/9efcdce27f150459e85d74af3f72d5c32898823a99f5410e26bf26cca2d21fb14e403377314a93aea248e57fb2964e19cee2c3f7bfc586ceba4c803a8f1b75c0 + languageName: node + linkType: hard + +"@ethersproject/pbkdf2@npm:5.7.0, @ethersproject/pbkdf2@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/pbkdf2@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + checksum: 10c0/e5a29cf28b4f4ca1def94d37cfb6a9c05c896106ed64881707813de01c1e7ded613f1e95febcccda4de96aae929068831d72b9d06beef1377b5a1a13a0eb3ff5 + languageName: node + linkType: hard + +"@ethersproject/properties@npm:5.7.0, @ethersproject/properties@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/properties@npm:5.7.0" + dependencies: + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/4fe5d36e5550b8e23a305aa236a93e8f04d891d8198eecdc8273914c761b0e198fd6f757877406ee3eb05033ec271132a3e5998c7bd7b9a187964fb4f67b1373 + languageName: node + linkType: hard + +"@ethersproject/providers@npm:5.7.2": + version: 5.7.2 + resolution: "@ethersproject/providers@npm:5.7.2" + dependencies: + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/base64": "npm:^5.7.0" + "@ethersproject/basex": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/networks": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/random": "npm:^5.7.0" + "@ethersproject/rlp": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/web": "npm:^5.7.0" + bech32: "npm:1.1.4" + ws: "npm:7.4.6" + checksum: 10c0/4c8d19e6b31f769c24042fb2d02e483a4ee60dcbfca9e3291f0a029b24337c47d1ea719a390be856f8fd02997125819e834415e77da4fb2023369712348dae4c + languageName: node + linkType: hard + +"@ethersproject/random@npm:5.7.0, @ethersproject/random@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/random@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/23e572fc55372653c22062f6a153a68c2e2d3200db734cd0d39621fbfd0ca999585bed2d5682e3ac65d87a2893048375682e49d1473d9965631ff56d2808580b + languageName: node + linkType: hard + +"@ethersproject/rlp@npm:5.7.0, @ethersproject/rlp@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/rlp@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/bc863d21dcf7adf6a99ae75c41c4a3fb99698cfdcfc6d5d82021530f3d3551c6305bc7b6f0475ad6de6f69e91802b7e872bee48c0596d98969aefcf121c2a044 + languageName: node + linkType: hard + +"@ethersproject/sha2@npm:5.7.0, @ethersproject/sha2@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/sha2@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + hash.js: "npm:1.1.7" + checksum: 10c0/0e7f9ce6b1640817b921b9c6dd9dab8d5bf5a0ce7634d6a7d129b7366a576c2f90dcf4bcb15a0aa9310dde67028f3a44e4fcc2f26b565abcd2a0f465116ff3b1 + languageName: node + linkType: hard + +"@ethersproject/signing-key@npm:5.7.0, @ethersproject/signing-key@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/signing-key@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + bn.js: "npm:^5.2.1" + elliptic: "npm:6.5.4" + hash.js: "npm:1.1.7" + checksum: 10c0/fe2ca55bcdb6e370d81372191d4e04671234a2da872af20b03c34e6e26b97dc07c1ee67e91b673680fb13344c9d5d7eae52f1fa6117733a3d68652b778843e09 + languageName: node + linkType: hard + +"@ethersproject/solidity@npm:5.7.0": + version: 5.7.0 + resolution: "@ethersproject/solidity@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/sha2": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/bedf9918911144b0ec352b8aa7fa44abf63f0b131629c625672794ee196ba7d3992b0e0d3741935ca176813da25b9bcbc81aec454652c63113bdc3a1706beac6 + languageName: node + linkType: hard + +"@ethersproject/strings@npm:5.7.0, @ethersproject/strings@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/strings@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/570d87040ccc7d94de9861f76fc2fba6c0b84c5d6104a99a5c60b8a2401df2e4f24bf9c30afa536163b10a564a109a96f02e6290b80e8f0c610426f56ad704d1 + languageName: node + linkType: hard + +"@ethersproject/transactions@npm:5.7.0, @ethersproject/transactions@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/transactions@npm:5.7.0" + dependencies: + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/rlp": "npm:^5.7.0" + "@ethersproject/signing-key": "npm:^5.7.0" + checksum: 10c0/aa4d51379caab35b9c468ed1692a23ae47ce0de121890b4f7093c982ee57e30bd2df0c743faed0f44936d7e59c55fffd80479f2c28ec6777b8de06bfb638c239 + languageName: node + linkType: hard + +"@ethersproject/units@npm:5.7.0": + version: 5.7.0 + resolution: "@ethersproject/units@npm:5.7.0" + dependencies: + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/constants": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + checksum: 10c0/4da2fdefe2a506cc9f8b408b2c8638ab35b843ec413d52713143f08501a55ff67a808897f9a91874774fb526423a0821090ba294f93e8bf4933a57af9677ac5e + languageName: node + linkType: hard + +"@ethersproject/wallet@npm:5.7.0": + version: 5.7.0 + resolution: "@ethersproject/wallet@npm:5.7.0" + dependencies: + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/abstract-signer": "npm:^5.7.0" + "@ethersproject/address": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/hdnode": "npm:^5.7.0" + "@ethersproject/json-wallets": "npm:^5.7.0" + "@ethersproject/keccak256": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/random": "npm:^5.7.0" + "@ethersproject/signing-key": "npm:^5.7.0" + "@ethersproject/transactions": "npm:^5.7.0" + "@ethersproject/wordlists": "npm:^5.7.0" + checksum: 10c0/f872b957db46f9de247d39a398538622b6c7a12f93d69bec5f47f9abf0701ef1edc10497924dd1c14a68109284c39a1686fa85586d89b3ee65df49002c40ba4c + languageName: node + linkType: hard + +"@ethersproject/web@npm:5.7.1, @ethersproject/web@npm:^5.7.0": + version: 5.7.1 + resolution: "@ethersproject/web@npm:5.7.1" + dependencies: + "@ethersproject/base64": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/c82d6745c7f133980e8dab203955260e07da22fa544ccafdd0f21c79fae127bd6ef30957319e37b1cc80cddeb04d6bfb60f291bb14a97c9093d81ce50672f453 + languageName: node + linkType: hard + +"@ethersproject/wordlists@npm:5.7.0, @ethersproject/wordlists@npm:^5.7.0": + version: 5.7.0 + resolution: "@ethersproject/wordlists@npm:5.7.0" + dependencies: + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/logger": "npm:^5.7.0" + "@ethersproject/properties": "npm:^5.7.0" + "@ethersproject/strings": "npm:^5.7.0" + checksum: 10c0/da4f3eca6d691ebf4f578e6b2ec3a76dedba791be558f6cf7e10cd0bfbaeab5a6753164201bb72ced745fb02b6ef7ef34edcb7e6065ce2b624c6556a461c3f70 + languageName: node + linkType: hard + +"@fastify/busboy@npm:^2.0.0": + version: 2.1.1 + resolution: "@fastify/busboy@npm:2.1.1" + checksum: 10c0/6f8027a8cba7f8f7b736718b013f5a38c0476eea67034c94a0d3c375e2b114366ad4419e6a6fa7ffc2ef9c6d3e0435d76dd584a7a1cbac23962fda7650b579e3 + languageName: node + linkType: hard + +"@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 10c0/0b3c9958d3cd17f4add3574975e3115ae05dc7f1298a60810414b16f6f558c137b5fb3cd3905df380bacfd955ec13f67c1e6710cbb5c246a7e8d65a8289b2bff + languageName: node + linkType: hard + +"@here-wallet/core@npm:*, @here-wallet/core@npm:3.3.1": + version: 3.3.1 + resolution: "@here-wallet/core@npm:3.3.1" + dependencies: + "@near-js/accounts": "npm:^1.2.1" + "@near-js/crypto": "npm:^1.2.4" + "@near-js/types": "npm:^0.2.1" + "@near-js/utils": "npm:^0.2.2" + js-sha256: "npm:^0.11.0" + sha1: "npm:^1.1.1" + uuid4: "npm:2.0.3" + peerDependencies: + bn.js: 5.2.1 + borsh: 0.7.0 + checksum: 10c0/1013c4eb4a808b949dc9acf7d49d0818187de2ff8ef3f56950977846b11c920a7c9f33eb69dbbc3f52648d9ee063bd9be51da1149b4d88eb63e5f74ea6c2ed24 + languageName: node + linkType: hard + +"@hexagon/base64@npm:1.1.26": + version: 1.1.26 + resolution: "@hexagon/base64@npm:1.1.26" + checksum: 10c0/3c334f179961871476bcf1b58e12773b97dcf1697dfca93895275a1bf4e0485b02ba91a4f1aa32581fb1743fcac96874609c2f8b3a7c6e68ba3324c4d79e0311 + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.9.2": + version: 0.9.5 + resolution: "@humanwhocodes/config-array@npm:0.9.5" + dependencies: + "@humanwhocodes/object-schema": "npm:^1.2.1" + debug: "npm:^4.1.1" + minimatch: "npm:^3.0.4" + checksum: 10c0/6a6be8bb71443615b98dcf2136e31d7261289b32ef474c2f76b084940922d82b349c70111799c389d4eb02040e8f686e5a635283f65774853556c219a8699cc4 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^1.2.1": + version: 1.2.1 + resolution: "@humanwhocodes/object-schema@npm:1.2.1" + checksum: 10c0/c3c35fdb70c04a569278351c75553e293ae339684ed75895edc79facc7276e351115786946658d78133130c0cca80e57e2203bc07f8fa7fe7980300e8deef7db + languageName: node + linkType: hard + +"@hutson/parse-repository-url@npm:^5.0.0": + version: 5.0.0 + resolution: "@hutson/parse-repository-url@npm:5.0.0" + checksum: 10c0/068c5c9e38fecc10e3aa6f6eee5818db6f3f29a70d01fec64e9ec0ee985e8995a0cf79ec5f7c80530f1fb27d99668ee2f38d8929b712b82d5100ebd2c9153e85 + languageName: node + linkType: hard + +"@improbable-eng/grpc-web@npm:^0.15.0": + version: 0.15.0 + resolution: "@improbable-eng/grpc-web@npm:0.15.0" + dependencies: + browser-headers: "npm:^0.4.1" + peerDependencies: + google-protobuf: ^3.14.0 + checksum: 10c0/98949a73bf98a54e5df02a3a13e3dadad83a610a35ed57600e566a842777e02bec71de413e42a7728267a38c5ccf30af67fe516486e68546c2701e95d2446f5c + languageName: node + linkType: hard + +"@ipld/dag-cbor@npm:^8.0.0": + version: 8.0.1 + resolution: "@ipld/dag-cbor@npm:8.0.1" + dependencies: + cborg: "npm:^1.6.0" + multiformats: "npm:^11.0.0" + checksum: 10c0/e92ad0efb23e456b19c5b1ebeda76fe9aaa4d0a8296a607a06bebd3398a8b547f60d0a8bf85852e28f0fb4e944f123ba1d056d3c08bc58334648e2c1ee1d5253 + languageName: node + linkType: hard + +"@ipld/dag-json@npm:^9.0.0": + version: 9.1.1 + resolution: "@ipld/dag-json@npm:9.1.1" + dependencies: + cborg: "npm:^1.5.4" + multiformats: "npm:^11.0.0" + checksum: 10c0/add01c7b784d82c9c279136a741717d042fbf2a8d562de4532842e5b15e34d07ccb869f594ec9051f22186552afadea98510e6a160c40c1251fc56d6a923ead5 + languageName: node + linkType: hard + +"@ipld/dag-pb@npm:^3.0.0": + version: 3.0.2 + resolution: "@ipld/dag-pb@npm:3.0.2" + dependencies: + multiformats: "npm:^11.0.0" + checksum: 10c0/973cd1755cd4ace4407221b76e36c3b017a87c38cf2f5de015fa674fded00a61bcb7ed8198adba7c8f9976c11796e371f2abfe8e3f60d046c4a9b76bae5d5c73 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@isaacs/string-locale-compare@npm:^1.1.0": + version: 1.1.0 + resolution: "@isaacs/string-locale-compare@npm:1.1.0" + checksum: 10c0/d67226ff7ac544a495c77df38187e69e0e3a0783724777f86caadafb306e2155dc3b5787d5927916ddd7fb4a53561ac8f705448ac3235d18ea60da5854829fdf + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-ansi: "npm:^6.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 + languageName: node + linkType: hard + +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + checksum: 10c0/c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@sinonjs/fake-timers": "npm:^10.0.2" + "@types/node": "npm:*" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: 10c0/a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + collect-v8-coverage: "npm:^1.0.0" + exit: "npm:^0.1.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^4.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.1" + strip-ansi: "npm:^6.0.0" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + callsites: "npm:^3.0.0" + graceful-fs: "npm:^4.2.9" + checksum: 10c0/a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10c0/7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b + languageName: node + linkType: hard + +"@jest/transform@npm:^29.4.3, @jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + babel-plugin-istanbul: "npm:^6.1.1" + chalk: "npm:^4.0.0" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pirates: "npm:^4.0.4" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.2" + checksum: 10c0/7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.6 + resolution: "@jridgewell/source-map@npm:0.3.6" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + checksum: 10c0/6a4ecc713ed246ff8e5bdcc1ef7c49aaa93f7463d948ba5054dda18b02dcc6a055e2828c577bcceee058f302ce1fc95595713d44f5c45e43d459f88d267f2f04 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@jscutlery/semver@npm:5.3.1": + version: 5.3.1 + resolution: "@jscutlery/semver@npm:5.3.1" + dependencies: + chalk: "npm:4.1.2" + conventional-changelog: "npm:^5.1.0" + conventional-changelog-angular: "npm:^7.0.0" + conventional-changelog-atom: "npm:^4.0.0" + conventional-changelog-codemirror: "npm:^4.0.0" + conventional-changelog-conventionalcommits: "npm:^7.0.2" + conventional-changelog-ember: "npm:^4.0.0" + conventional-changelog-eslint: "npm:^5.0.0" + conventional-changelog-express: "npm:^4.0.0" + conventional-changelog-jquery: "npm:^5.0.0" + conventional-changelog-jshint: "npm:^4.0.0" + conventional-commits-parser: "npm:^5.0.0" + conventional-recommended-bump: "npm:^9.0.0" + detect-indent: "npm:6.1.0" + git-semver-tags: "npm:^7.0.1" + inquirer: "npm:8.2.6" + rxjs: "npm:7.8.1" + peerDependencies: + "@nx/devkit": ^18.0.0 || ^19.0.0 + checksum: 10c0/0beb714aca041ddc3b95dacc6c70ec8b667b26016992852eedca0b50a28e36cd7f452b12927553e5da548c97b1c0e08b758ce8a4092036c1ec696ff7eac21c51 + languageName: node + linkType: hard + +"@jsdoc/salty@npm:^0.2.1": + version: 0.2.8 + resolution: "@jsdoc/salty@npm:0.2.8" + dependencies: + lodash: "npm:^4.17.21" + checksum: 10c0/ace2a0ef346e49e9573623544939e1b07906c2775d1027113e10666997c9a50397059b3212e233a053f9d8a118818b847f1690177017b1126408d9bcc7054938 + languageName: node + linkType: hard + +"@jspm/generator@npm:^1.1.10": + version: 1.1.12 + resolution: "@jspm/generator@npm:1.1.12" + dependencies: + "@babel/core": "npm:^7.20.12" + "@babel/plugin-syntax-import-assertions": "npm:^7.20.0" + "@babel/preset-typescript": "npm:^7.18.6" + "@jspm/import-map": "npm:^1.0.7" + abort-controller: "npm:^3.0.0" + es-module-lexer: "npm:^1.1.1" + ipfs-client: "npm:^0.9.2" + make-fetch-happen: "npm:^8.0.14" + rimraf: "npm:^4.1.2" + sver: "npm:^1.8.4" + checksum: 10c0/14f1c803874a8ec190bfce3674969874e94b7eeaa562df6782b830d7045fe14ba0132b0981fd58ff6b0a0ceaa8f7253c19d60bb74bf6bc4335e089f9548fe893 + languageName: node + linkType: hard + +"@jspm/import-map@npm:^1.0.7": + version: 1.1.0 + resolution: "@jspm/import-map@npm:1.1.0" + checksum: 10c0/6bbbf61fc4e4cbff02c6ac79d06a00e8677472620858431feec671863d9038623edbec85a823a7fc9e99423fd0724f0193b4dc836416c07fd3bef439a96fb9f1 + languageName: node + linkType: hard + +"@ledgerhq/devices@npm:^8.2.0, @ledgerhq/devices@npm:^8.4.2, @ledgerhq/devices@npm:^8.4.4": + version: 8.4.4 + resolution: "@ledgerhq/devices@npm:8.4.4" + dependencies: + "@ledgerhq/errors": "npm:^6.19.1" + "@ledgerhq/logs": "npm:^6.12.0" + rxjs: "npm:^7.8.1" + semver: "npm:^7.3.5" + checksum: 10c0/ea4c3dada124c5c0aad59837e1c399bf2f41f8b4da5c996aaf73bbf8719082598808947c505dc728266ff83fc5fea71170d3f0d18a9b5d59e6e2737ae8a38f39 + languageName: node + linkType: hard + +"@ledgerhq/errors@npm:^6.16.1, @ledgerhq/errors@npm:^6.18.0, @ledgerhq/errors@npm:^6.19.1": + version: 6.19.1 + resolution: "@ledgerhq/errors@npm:6.19.1" + checksum: 10c0/5cfbd5ff5e4316afc88c456a74d3dc0e0032dafd88f656e80a5cb5b297a75ba6701c53ce38ef3f38a84a8591c499b0b9248cdf352ff34c97a550440cdaddd8d2 + languageName: node + linkType: hard + +"@ledgerhq/hw-transport-webhid@npm:6.29.2": + version: 6.29.2 + resolution: "@ledgerhq/hw-transport-webhid@npm:6.29.2" + dependencies: + "@ledgerhq/devices": "npm:^8.4.2" + "@ledgerhq/errors": "npm:^6.18.0" + "@ledgerhq/hw-transport": "npm:^6.31.2" + "@ledgerhq/logs": "npm:^6.12.0" + checksum: 10c0/86a610bf99eb44fbd93a7d0afc621f13a5f43e63fc86c64f686f88cc528d0ea62a51f674b8a6148aaa4330cc8ef2c2b2e461bbea5a71ae39305f82124a83377b + languageName: node + linkType: hard + +"@ledgerhq/hw-transport@npm:6.30.3": + version: 6.30.3 + resolution: "@ledgerhq/hw-transport@npm:6.30.3" + dependencies: + "@ledgerhq/devices": "npm:^8.2.0" + "@ledgerhq/errors": "npm:^6.16.1" + "@ledgerhq/logs": "npm:^6.12.0" + events: "npm:^3.3.0" + checksum: 10c0/e50b9f99d6127b641d293d33b5141f55e59a8a14afb231e7d5c696e234a210ca94a6573a442548384ac4afa315b60b9c3ff7cff29f3df5e00f9cb59385801d70 + languageName: node + linkType: hard + +"@ledgerhq/hw-transport@npm:^6.31.2": + version: 6.31.4 + resolution: "@ledgerhq/hw-transport@npm:6.31.4" + dependencies: + "@ledgerhq/devices": "npm:^8.4.4" + "@ledgerhq/errors": "npm:^6.19.1" + "@ledgerhq/logs": "npm:^6.12.0" + events: "npm:^3.3.0" + checksum: 10c0/033acb802d991788efcda9223356528d0987a268e94c34cbafde499541722363e7cfa6e2734365ef3282c0a80a69f4964a6d728690ff7494662a650516530b02 + languageName: node + linkType: hard + +"@ledgerhq/logs@npm:^6.12.0": + version: 6.12.0 + resolution: "@ledgerhq/logs@npm:6.12.0" + checksum: 10c0/573122867ae807a60c3218234019ba7c4b35c14551b90c291fd589d7c2e7f002c2e84151868e67801c9f89a33d8a5569da77aef83b5f5e03b5faa2811cab6a86 + languageName: node + linkType: hard + +"@leichtgewicht/ip-codec@npm:^2.0.1": + version: 2.0.5 + resolution: "@leichtgewicht/ip-codec@npm:2.0.5" + checksum: 10c0/14a0112bd59615eef9e3446fea018045720cd3da85a98f801a685a818b0d96ef2a1f7227e8d271def546b2e2a0fe91ef915ba9dc912ab7967d2317b1a051d66b + languageName: node + linkType: hard + +"@lezer/common@npm:^1.0.0": + version: 1.2.2 + resolution: "@lezer/common@npm:1.2.2" + checksum: 10c0/8dac6afded15606a94fadbdbbc3b3115489c4fc0580ac103efdbe6b3dae7f3ef4d82250a45e80c7530240b9c9b09f1389975bf288651eb6d3236ee962c060e35 + languageName: node + linkType: hard + +"@lezer/lr@npm:^1.0.0": + version: 1.4.2 + resolution: "@lezer/lr@npm:1.4.2" + dependencies: + "@lezer/common": "npm:^1.0.0" + checksum: 10c0/22bb5d0d4b33d0de5eb0706b7e5b5f2d20f570e112d9110009bd35b62ff10f2eb4eff8da4cf373dd4ddf5e06a304120b8f039add7ed9997c981c13945d5329cd + languageName: node + linkType: hard + +"@libp2p/interface-connection@npm:^4.0.0": + version: 4.0.0 + resolution: "@libp2p/interface-connection@npm:4.0.0" + dependencies: + "@libp2p/interface-peer-id": "npm:^2.0.0" + "@libp2p/interfaces": "npm:^3.0.0" + "@multiformats/multiaddr": "npm:^12.0.0" + it-stream-types: "npm:^1.0.4" + uint8arraylist: "npm:^2.1.2" + checksum: 10c0/d41a740ea5e974162bf378ff4e32ba16cd753e3f38bc7f705fad075e0c487edabefaa3bbc61858e48e9bcf907263aae26f1a162736d7405529a188b74da286c3 + languageName: node + linkType: hard + +"@libp2p/interface-keychain@npm:^1.0.3": + version: 1.0.8 + resolution: "@libp2p/interface-keychain@npm:1.0.8" + dependencies: + multiformats: "npm:^10.0.0" + checksum: 10c0/55e276881b1748b31b1237ebd5b0fb3278b2c2fe6d20409ed2e36caa04bdba802c2f593c28524dbbb7d5cf193ae4cf2f4346fa279b96da26fa8fc960b3e75caa + languageName: node + linkType: hard + +"@libp2p/interface-peer-id@npm:^1.0.0, @libp2p/interface-peer-id@npm:^1.0.4": + version: 1.1.2 + resolution: "@libp2p/interface-peer-id@npm:1.1.2" + dependencies: + multiformats: "npm:^10.0.0" + checksum: 10c0/f480aedc43a132071b47eaa87f40232170973b8e5681d6662be217103b57dd81cdbbb64ecc6b868ef804b307ef7109ffe072f9d438588ec7ce19cc718ad3e0cf + languageName: node + linkType: hard + +"@libp2p/interface-peer-id@npm:^2.0.0, @libp2p/interface-peer-id@npm:^2.0.2": + version: 2.0.2 + resolution: "@libp2p/interface-peer-id@npm:2.0.2" + dependencies: + multiformats: "npm:^11.0.0" + checksum: 10c0/015c495c56602b38203c91f26fedc513bebf84fe06ab64f31af026a854a5088f50926d3534da3c782be4fbacd5495e74dc87844b6ad6a55789b7cb0b3a4fcef3 + languageName: node + linkType: hard + +"@libp2p/interface-peer-info@npm:^1.0.2": + version: 1.0.10 + resolution: "@libp2p/interface-peer-info@npm:1.0.10" + dependencies: + "@libp2p/interface-peer-id": "npm:^2.0.0" + "@multiformats/multiaddr": "npm:^12.0.0" + checksum: 10c0/6eee457dab1ad25837b1eb19a518882936cb9ef123a7c9a76d0efbcd11ab9d9c18d16fc6410da81dfc5bced41fd549e8e18f18226ca370f3786947b6c6c3945c + languageName: node + linkType: hard + +"@libp2p/interface-pubsub@npm:^3.0.0": + version: 3.0.7 + resolution: "@libp2p/interface-pubsub@npm:3.0.7" + dependencies: + "@libp2p/interface-connection": "npm:^4.0.0" + "@libp2p/interface-peer-id": "npm:^2.0.0" + "@libp2p/interfaces": "npm:^3.0.0" + it-pushable: "npm:^3.0.0" + uint8arraylist: "npm:^2.1.2" + checksum: 10c0/cbb74e0d0791429a05829cce359ca168b14966479499d16b5c15d117697fe621ca4b146f15ca8cee8ba16142ddefb3c95446b1bde1f11dd5e847642b420edb8e + languageName: node + linkType: hard + +"@libp2p/interfaces@npm:^3.0.0": + version: 3.3.2 + resolution: "@libp2p/interfaces@npm:3.3.2" + checksum: 10c0/70508ec62e52aa69f584c0a7250921bc9cdddcc2d2f20a3b7b70b642785f2bec69d3c04e404ae5a82ae3a1bb752f5612d5126c1f7eb64ee402c1ce16998d5668 + languageName: node + linkType: hard + +"@libp2p/logger@npm:^2.0.0": + version: 2.1.1 + resolution: "@libp2p/logger@npm:2.1.1" + dependencies: + "@libp2p/interface-peer-id": "npm:^2.0.2" + "@multiformats/multiaddr": "npm:^12.1.3" + debug: "npm:^4.3.4" + interface-datastore: "npm:^8.2.0" + multiformats: "npm:^11.0.2" + checksum: 10c0/f5349062d4b35075d3901e88ea38aa627ffe7f9be9b3e23d9fd05bc0a62e2237204c450c07b15d1b9fc1406cf5a893f39198bbf42e4c521512c6ab7adde088b9 + languageName: node + linkType: hard + +"@libp2p/peer-id@npm:^1.1.10": + version: 1.1.18 + resolution: "@libp2p/peer-id@npm:1.1.18" + dependencies: + "@libp2p/interface-peer-id": "npm:^1.0.0" + err-code: "npm:^3.0.1" + multiformats: "npm:^10.0.0" + uint8arrays: "npm:^4.0.2" + checksum: 10c0/97405e2a8cc6f7ed8efab30aaae96db8ec9050240ccc0b8556c94dd9adf1c165f1792bcea00e3e0f352dc04be8860362a7770ce5fc5152a3438440af629a9f1c + languageName: node + linkType: hard + +"@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0, @lit-labs/ssr-dom-shim@npm:^1.2.0": + version: 1.2.1 + resolution: "@lit-labs/ssr-dom-shim@npm:1.2.1" + checksum: 10c0/75cecf2cc4c1a089c6984d9f45b8264e3b4947b4ebed96aef7eb201bd6b3f26caeaafedf457884ac38d4f2d99cddaf94a4b2414c02c61fbf1f64c0a0dade11f4 + languageName: node + linkType: hard + +"@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0": + version: 1.6.3 + resolution: "@lit/reactive-element@npm:1.6.3" + dependencies: + "@lit-labs/ssr-dom-shim": "npm:^1.0.0" + checksum: 10c0/10f1d25e24e32feb21c4c6f9e11d062901241602e12c4ecf746b3138f87fed4d8394194645514d5c1bfd5f33f3fd56ee8ef41344e2cb4413c40fe4961ec9d419 + languageName: node + linkType: hard + +"@lit/reactive-element@npm:^2.0.0, @lit/reactive-element@npm:^2.0.4": + version: 2.0.4 + resolution: "@lit/reactive-element@npm:2.0.4" + dependencies: + "@lit-labs/ssr-dom-shim": "npm:^1.2.0" + checksum: 10c0/359cc19ea9ee8b65e1417eb9c12f40dddba8f0a5ab32f0e5facaecee6060629e44eb4ca27d9af945fe6eda8c033aa636abaa5f0c4e6a529b224d78674acf47ba + languageName: node + linkType: hard + +"@lmdb/lmdb-darwin-arm64@npm:2.8.5": + version: 2.8.5 + resolution: "@lmdb/lmdb-darwin-arm64@npm:2.8.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@lmdb/lmdb-darwin-x64@npm:2.8.5": + version: 2.8.5 + resolution: "@lmdb/lmdb-darwin-x64@npm:2.8.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@lmdb/lmdb-linux-arm64@npm:2.8.5": + version: 2.8.5 + resolution: "@lmdb/lmdb-linux-arm64@npm:2.8.5" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@lmdb/lmdb-linux-arm@npm:2.8.5": + version: 2.8.5 + resolution: "@lmdb/lmdb-linux-arm@npm:2.8.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@lmdb/lmdb-linux-x64@npm:2.8.5": + version: 2.8.5 + resolution: "@lmdb/lmdb-linux-x64@npm:2.8.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@lmdb/lmdb-win32-x64@npm:2.8.5": + version: 2.8.5 + resolution: "@lmdb/lmdb-win32-x64@npm:2.8.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@metamask/detect-provider@npm:2.0.0": + version: 2.0.0 + resolution: "@metamask/detect-provider@npm:2.0.0" + checksum: 10c0/4a79113e90493eedbe509b868762da8275d5af420f4b696be3208794dd6f8ed11d74f477147db89e453cfc2737270e35b45d1b2eb0bf3751c2f7077e915b5645 + languageName: node + linkType: hard + +"@metamask/eth-json-rpc-provider@npm:^1.0.0": + version: 1.0.1 + resolution: "@metamask/eth-json-rpc-provider@npm:1.0.1" + dependencies: + "@metamask/json-rpc-engine": "npm:^7.0.0" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^5.0.1" + checksum: 10c0/842f999d7a1c49b625fd863b453d076f393ac9090a1b9c7531aa24ec033e7e844c98a1c433ac02f4e66a62262d68c0d37c218dc724123da4eea1abcc12a63492 + languageName: node + linkType: hard + +"@metamask/json-rpc-engine@npm:^7.0.0, @metamask/json-rpc-engine@npm:^7.3.2": + version: 7.3.3 + resolution: "@metamask/json-rpc-engine@npm:7.3.3" + dependencies: + "@metamask/rpc-errors": "npm:^6.2.1" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^8.3.0" + checksum: 10c0/6c3b55de01593bc841de1bf4daac46cc307ed7c3b759fec12cbda582527962bb0d909b024e6c56251c0644379634cec24f3d37cbf3443430e148078db9baece1 + languageName: node + linkType: hard + +"@metamask/json-rpc-engine@npm:^8.0.1, @metamask/json-rpc-engine@npm:^8.0.2": + version: 8.0.2 + resolution: "@metamask/json-rpc-engine@npm:8.0.2" + dependencies: + "@metamask/rpc-errors": "npm:^6.2.1" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^8.3.0" + checksum: 10c0/57a584e713be98837b56b1985fc14020b74939af200c304e9dcde0a59b622f0d4b1fd07a9032dd3652b72ce330e47db8b9aa13402a443ad8c09667a4204c4c17 + languageName: node + linkType: hard + +"@metamask/json-rpc-middleware-stream@npm:^6.0.2": + version: 6.0.2 + resolution: "@metamask/json-rpc-middleware-stream@npm:6.0.2" + dependencies: + "@metamask/json-rpc-engine": "npm:^7.3.2" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^8.3.0" + readable-stream: "npm:^3.6.2" + checksum: 10c0/a91b8d834253a1700d96cf0f08d2362e2db58365f751cb3e60b3c5e9422a1f443a8a515d5a653ced59535726717d0f827c1aaf2a33dd33efb96a05f653bb0915 + languageName: node + linkType: hard + +"@metamask/json-rpc-middleware-stream@npm:^7.0.1": + version: 7.0.2 + resolution: "@metamask/json-rpc-middleware-stream@npm:7.0.2" + dependencies: + "@metamask/json-rpc-engine": "npm:^8.0.2" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^8.3.0" + readable-stream: "npm:^3.6.2" + checksum: 10c0/5819e5cd1460046d309218110a76727d5b5b7b0fb379efd2e938e145905a359c2b6d4278d390760227ad5823e3f4bcaa001cbb5abeeeb014b08badbb1fa29f1f + languageName: node + linkType: hard + +"@metamask/object-multiplex@npm:^2.0.0": + version: 2.0.0 + resolution: "@metamask/object-multiplex@npm:2.0.0" + dependencies: + once: "npm:^1.4.0" + readable-stream: "npm:^3.6.2" + checksum: 10c0/14786b8ec0668ff638ab5cb972d4141a70533452ec18f607f9002acddf547ab4548754948e0298978650f2f3be954d86882d9b0f6b134e0af2c522398594e499 + languageName: node + linkType: hard + +"@metamask/onboarding@npm:^1.0.1": + version: 1.0.1 + resolution: "@metamask/onboarding@npm:1.0.1" + dependencies: + bowser: "npm:^2.9.0" + checksum: 10c0/7a95eb47749217878a9e964c169a479a7532892d723eaade86c2e638e5ea5a54c697e0bbf68ab4f06dff5770639b9937da3375a3e8f958eae3f8da69f24031ed + languageName: node + linkType: hard + +"@metamask/providers@npm:16.1.0": + version: 16.1.0 + resolution: "@metamask/providers@npm:16.1.0" + dependencies: + "@metamask/json-rpc-engine": "npm:^8.0.1" + "@metamask/json-rpc-middleware-stream": "npm:^7.0.1" + "@metamask/object-multiplex": "npm:^2.0.0" + "@metamask/rpc-errors": "npm:^6.2.1" + "@metamask/safe-event-emitter": "npm:^3.1.1" + "@metamask/utils": "npm:^8.3.0" + detect-browser: "npm:^5.2.0" + extension-port-stream: "npm:^3.0.0" + fast-deep-equal: "npm:^3.1.3" + is-stream: "npm:^2.0.0" + readable-stream: "npm:^3.6.2" + webextension-polyfill: "npm:^0.10.0" + checksum: 10c0/ef0fe2cad0db6e2fd1c0b73894419e4dc153e1742e8b16e233164eaec941ef3d4859728e4a2e733e818b56093abd889fc96c7a75dccf9878cbdab45fd3b36e2c + languageName: node + linkType: hard + +"@metamask/providers@npm:^15.0.0": + version: 15.0.0 + resolution: "@metamask/providers@npm:15.0.0" + dependencies: + "@metamask/json-rpc-engine": "npm:^7.3.2" + "@metamask/json-rpc-middleware-stream": "npm:^6.0.2" + "@metamask/object-multiplex": "npm:^2.0.0" + "@metamask/rpc-errors": "npm:^6.2.1" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^8.3.0" + detect-browser: "npm:^5.2.0" + extension-port-stream: "npm:^3.0.0" + fast-deep-equal: "npm:^3.1.3" + is-stream: "npm:^2.0.0" + readable-stream: "npm:^3.6.2" + webextension-polyfill: "npm:^0.10.0" + checksum: 10c0/c079cb8440f7cbd8ba863070a8c5c1ada4ad99e31694ec7b0c537b1cb11e66f9d4271e737633ce89f98248208ba076bfc90ddab94ce0299178fdab9a8489fb09 + languageName: node + linkType: hard + +"@metamask/rpc-errors@npm:^6.2.1": + version: 6.4.0 + resolution: "@metamask/rpc-errors@npm:6.4.0" + dependencies: + "@metamask/utils": "npm:^9.0.0" + fast-safe-stringify: "npm:^2.0.6" + checksum: 10c0/eeca3a2316c97f2f0e8922fc3a0625a704f76a1dd3b0cc78ed54dcc3c4ca7f5c3f5c90880e74c748f09f075cc21f176f3498421ad75a5c323535e454a7896c21 + languageName: node + linkType: hard + +"@metamask/safe-event-emitter@npm:^2.0.0": + version: 2.0.0 + resolution: "@metamask/safe-event-emitter@npm:2.0.0" + checksum: 10c0/a86b91f909834dc14de7eadd38b22d4975f6529001d265cd0f5c894351f69f39447f1ef41b690b9849c86dd2a25a39515ef5f316545d36aea7b3fc50ee930933 + languageName: node + linkType: hard + +"@metamask/safe-event-emitter@npm:^3.0.0, @metamask/safe-event-emitter@npm:^3.1.1": + version: 3.1.1 + resolution: "@metamask/safe-event-emitter@npm:3.1.1" + checksum: 10c0/4dd51651fa69adf65952449b20410acac7edad06f176dc6f0a5d449207527a2e85d5a21a864566e3d8446fb259f8840bd69fdb65932007a882f771f473a2b682 + languageName: node + linkType: hard + +"@metamask/sdk-communication-layer@npm:0.26.4": + version: 0.26.4 + resolution: "@metamask/sdk-communication-layer@npm:0.26.4" + dependencies: + bufferutil: "npm:^4.0.8" + date-fns: "npm:^2.29.3" + debug: "npm:^4.3.4" + utf-8-validate: "npm:^5.0.2" + uuid: "npm:^8.3.2" + peerDependencies: + cross-fetch: ^4.0.0 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 + checksum: 10c0/01f9704942f6751ba03819117ba611dae3712310bdf54fed1637a526d5fd972fc6fe097be27a5ed4b657a8dea8e497861ce81efa1879000d10696c787e8356e2 + languageName: node + linkType: hard + +"@metamask/sdk-communication-layer@npm:0.28.2": + version: 0.28.2 + resolution: "@metamask/sdk-communication-layer@npm:0.28.2" + dependencies: + bufferutil: "npm:^4.0.8" + date-fns: "npm:^2.29.3" + debug: "npm:^4.3.4" + utf-8-validate: "npm:^5.0.2" + uuid: "npm:^8.3.2" + peerDependencies: + cross-fetch: ^4.0.0 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 + checksum: 10c0/7d51316eb313bd4464e8e5d787c4d88228e40673414883a693f5772908cb5c17903db0d3101bc04ee9db218728525a0ad3a8545c6e7d933b48f3ae6ce8a474bc + languageName: node + linkType: hard + +"@metamask/sdk-install-modal-web@npm:0.26.4": + version: 0.26.4 + resolution: "@metamask/sdk-install-modal-web@npm:0.26.4" + dependencies: + qr-code-styling: "npm:^1.6.0-rc.1" + peerDependencies: + i18next: 23.2.3 + react: ^18.2.0 + react-dom: ^18.2.0 + react-native: "*" + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true + checksum: 10c0/2bd87481e2630e739d19cfd211e5c68ebe7bd24ee4760764381ef93e4127afb5d6d4ca51b539c424c3bd2368dfe421daf86d689e1462b09c84509d0042968e45 + languageName: node + linkType: hard + +"@metamask/sdk-install-modal-web@npm:0.28.1": + version: 0.28.1 + resolution: "@metamask/sdk-install-modal-web@npm:0.28.1" + dependencies: + qr-code-styling: "npm:^1.6.0-rc.1" + peerDependencies: + i18next: 23.11.5 + react: ^18.2.0 + react-dom: ^18.2.0 + react-native: "*" + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true + checksum: 10c0/e7bc9789d6499ff1f2ec2587b0604c4df445bc35e0914165289348fe9325ccff60ef094b5ebe39310af9c68ee8d6d71ed0a6a217e2d3947a2aa92a4c7063e4a1 + languageName: node + linkType: hard + +"@metamask/sdk@npm:0.26.4": + version: 0.26.4 + resolution: "@metamask/sdk@npm:0.26.4" + dependencies: + "@metamask/onboarding": "npm:^1.0.1" + "@metamask/providers": "npm:^15.0.0" + "@metamask/sdk-communication-layer": "npm:0.26.4" + "@metamask/sdk-install-modal-web": "npm:0.26.4" + "@types/dom-screen-wake-lock": "npm:^1.0.0" + bowser: "npm:^2.9.0" + cross-fetch: "npm:^4.0.0" + debug: "npm:^4.3.4" + eciesjs: "npm:^0.3.15" + eth-rpc-errors: "npm:^4.0.3" + eventemitter2: "npm:^6.4.7" + i18next: "npm:23.11.5" + i18next-browser-languagedetector: "npm:7.1.0" + obj-multiplex: "npm:^1.0.0" + pump: "npm:^3.0.0" + qrcode-terminal-nooctal: "npm:^0.12.1" + react-native-webview: "npm:^11.26.0" + readable-stream: "npm:^3.6.2" + rollup-plugin-visualizer: "npm:^5.9.2" + socket.io-client: "npm:^4.5.1" + util: "npm:^0.12.4" + uuid: "npm:^8.3.2" + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: 10c0/74c671a1dae8f148ad6917f06c01a4d8f57ad9f4be911a7f9f0101be42871efa65a7836779e380a25644a4489a78bda54f68021d2e6066e09dcf08cfd57187f8 + languageName: node + linkType: hard + +"@metamask/sdk@npm:0.28.4": + version: 0.28.4 + resolution: "@metamask/sdk@npm:0.28.4" + dependencies: + "@metamask/onboarding": "npm:^1.0.1" + "@metamask/providers": "npm:16.1.0" + "@metamask/sdk-communication-layer": "npm:0.28.2" + "@metamask/sdk-install-modal-web": "npm:0.28.1" + "@types/dom-screen-wake-lock": "npm:^1.0.0" + "@types/uuid": "npm:^10.0.0" + bowser: "npm:^2.9.0" + cross-fetch: "npm:^4.0.0" + debug: "npm:^4.3.4" + eciesjs: "npm:^0.3.15" + eth-rpc-errors: "npm:^4.0.3" + eventemitter2: "npm:^6.4.7" + i18next: "npm:23.11.5" + i18next-browser-languagedetector: "npm:7.1.0" + obj-multiplex: "npm:^1.0.0" + pump: "npm:^3.0.0" + qrcode-terminal-nooctal: "npm:^0.12.1" + react-native-webview: "npm:^11.26.0" + readable-stream: "npm:^3.6.2" + rollup-plugin-visualizer: "npm:^5.9.2" + socket.io-client: "npm:^4.5.1" + util: "npm:^0.12.4" + uuid: "npm:^8.3.2" + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: 10c0/734045ba59e01baf9d5e87cfe85eeb44433e497ac845810f43361ce821260d6a2d89e34a2fe17a877a0f659b137767475fadf3ed23bc4562ad03220817c6df4c + languageName: node + linkType: hard + +"@metamask/superstruct@npm:^3.0.0, @metamask/superstruct@npm:^3.1.0": + version: 3.1.0 + resolution: "@metamask/superstruct@npm:3.1.0" + checksum: 10c0/8820e76582b3d735a2142c878ac4830d962f7a9c0776cb31bafdff646ff701657b9be192601d7f96834c3a8edd87677650f5bfa1a29d945e8dbc77a8d788b3fc + languageName: node + linkType: hard + +"@metamask/utils@npm:^5.0.1": + version: 5.0.2 + resolution: "@metamask/utils@npm:5.0.2" + dependencies: + "@ethereumjs/tx": "npm:^4.1.2" + "@types/debug": "npm:^4.1.7" + debug: "npm:^4.3.4" + semver: "npm:^7.3.8" + superstruct: "npm:^1.0.3" + checksum: 10c0/fa82d856362c3da9fa80262ffde776eeafb0e6f23c7e6d6401f824513a8b2641aa115c2eaae61c391950cdf4a56c57a10082c73a00a1840f8159d709380c4809 + languageName: node + linkType: hard + +"@metamask/utils@npm:^8.3.0": + version: 8.5.0 + resolution: "@metamask/utils@npm:8.5.0" + dependencies: + "@ethereumjs/tx": "npm:^4.2.0" + "@metamask/superstruct": "npm:^3.0.0" + "@noble/hashes": "npm:^1.3.1" + "@scure/base": "npm:^1.1.3" + "@types/debug": "npm:^4.1.7" + debug: "npm:^4.3.4" + pony-cause: "npm:^2.1.10" + semver: "npm:^7.5.4" + uuid: "npm:^9.0.1" + checksum: 10c0/037f463e3c6a512b21d057224b1e9645de5a86ba15c0d2140acd43fb7316bfdd9f2635ffdb98e970278eb4e0dd81080bb1855d08dff6a95280590379ad73a01b + languageName: node + linkType: hard + +"@metamask/utils@npm:^9.0.0": + version: 9.2.1 + resolution: "@metamask/utils@npm:9.2.1" + dependencies: + "@ethereumjs/tx": "npm:^4.2.0" + "@metamask/superstruct": "npm:^3.1.0" + "@noble/hashes": "npm:^1.3.1" + "@scure/base": "npm:^1.1.3" + "@types/debug": "npm:^4.1.7" + debug: "npm:^4.3.4" + pony-cause: "npm:^2.1.10" + semver: "npm:^7.5.4" + uuid: "npm:^9.0.1" + checksum: 10c0/e6e72ab3604ce5b60ef68457d385653604ecb52f4a30620ec6fa41420cc21627cb3c9f921ddcb0e86185a44ff41f68725fd545b4dda7fca89d0b839475d479c8 + languageName: node + linkType: hard + +"@meteorwallet/sdk@npm:*, @meteorwallet/sdk@npm:1.0.9": + version: 1.0.9 + resolution: "@meteorwallet/sdk@npm:1.0.9" + dependencies: + borsh: "npm:^0.7.0" + nanoid: "npm:3.3.6" + query-string: "npm:^7.1.3" + peerDependencies: + near-api-js: ^2.0.0 + checksum: 10c0/c67fb6c3f9a750615fbcf27dd153a83254a2bb18ddf0751b6a83077d2adf80a92db88ba8ca2c7a49058becb5d7994c2eddf1a6aa6bbc4f67114843b0ccea4330 + languageName: node + linkType: hard + +"@mintbase-js/wallet@npm:*": + version: 0.6.5 + resolution: "@mintbase-js/wallet@npm:0.6.5" + dependencies: + "@near-wallet-selector/core": "npm:8.9.12" + "@near-wallet-selector/wallet-utils": "npm:^8.9.12" + near-api-js: "npm:^4.0.3" + checksum: 10c0/f489ff51fca5e7373b112d7b3a0e2fe4d23570cc8b770774b60fdf9cf15fd6e6cb3ee20b0dba0e63613c89a3497b25f68261c817f5394b946ff04ebce340b86f + languageName: node + linkType: hard + +"@mintbase-js/wallet@npm:0.6.1": + version: 0.6.1 + resolution: "@mintbase-js/wallet@npm:0.6.1" + dependencies: + "@near-wallet-selector/core": "npm:8.9.12" + "@near-wallet-selector/wallet-utils": "npm:^8.9.12" + near-api-js: "npm:^4.0.3" + checksum: 10c0/46a4af455d3dc51ea2dcab0cc11263f2fd9d51c5afe184926f827a972996d9318ed3b8776d17bde7a5fd1643c3f505acc0772b403aba578eb5fe4b9f91da96d2 + languageName: node + linkType: hard + +"@mischnic/json-sourcemap@npm:^0.1.0": + version: 0.1.1 + resolution: "@mischnic/json-sourcemap@npm:0.1.1" + dependencies: + "@lezer/common": "npm:^1.0.0" + "@lezer/lr": "npm:^1.0.0" + json5: "npm:^2.2.1" + checksum: 10c0/e2e314fc048a16baedb10ec4d517c2622e464b8a9f8481cd4c008ebdabed1e5167a8f1407e06a14bb89f035addbb13851c1c5b6672ef8e089205f7f6d300cdd8 + languageName: node + linkType: hard + +"@motionone/animation@npm:^10.15.1, @motionone/animation@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/animation@npm:10.18.0" + dependencies: + "@motionone/easing": "npm:^10.18.0" + "@motionone/types": "npm:^10.17.1" + "@motionone/utils": "npm:^10.18.0" + tslib: "npm:^2.3.1" + checksum: 10c0/83c01ab8ecf5fae221e5012116c4c49d4473ba88ba22197e1d8c1e39364c5c6b9c5271e57ae716fd21f92314d15c63788c48d0a30872ee8d72337e1d98b46834 + languageName: node + linkType: hard + +"@motionone/dom@npm:^10.16.2, @motionone/dom@npm:^10.16.4": + version: 10.18.0 + resolution: "@motionone/dom@npm:10.18.0" + dependencies: + "@motionone/animation": "npm:^10.18.0" + "@motionone/generators": "npm:^10.18.0" + "@motionone/types": "npm:^10.17.1" + "@motionone/utils": "npm:^10.18.0" + hey-listen: "npm:^1.0.8" + tslib: "npm:^2.3.1" + checksum: 10c0/3bd4b1015e88464c9effc170c23bc63bbc910cbb9ca84986ec19ca82e0e13335e63a1f0d12e265fbe93616fe864fc2aec4e952d51e07932894e148de6fac2111 + languageName: node + linkType: hard + +"@motionone/easing@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/easing@npm:10.18.0" + dependencies: + "@motionone/utils": "npm:^10.18.0" + tslib: "npm:^2.3.1" + checksum: 10c0/0adf9b7086b0f569d28886890cc0725a489285f2debfcaf27c1c15dfef5736c9f4207cfda14c71b3275f8163777320cb7ff48ad263c7f4ccd31e12a5afc1a952 + languageName: node + linkType: hard + +"@motionone/generators@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/generators@npm:10.18.0" + dependencies: + "@motionone/types": "npm:^10.17.1" + "@motionone/utils": "npm:^10.18.0" + tslib: "npm:^2.3.1" + checksum: 10c0/7ed7dda5ac58cd3e8dd347b5539d242d96e02ee16fef921c8d14295a806e6bc429a15291461ec078977bd5f6162677225addd707ca79f808e65bc3599c45c0e9 + languageName: node + linkType: hard + +"@motionone/svelte@npm:^10.16.2": + version: 10.16.4 + resolution: "@motionone/svelte@npm:10.16.4" + dependencies: + "@motionone/dom": "npm:^10.16.4" + tslib: "npm:^2.3.1" + checksum: 10c0/a3f91d3ac5617ac8a2847abc0c8fad417cdc2cd9d814d60f7de2c909e4beeaf834b45a4288c8af6d26f62958a6c69714313b37ea6cd5aa2a9d1ad5198ec5881f + languageName: node + linkType: hard + +"@motionone/types@npm:^10.15.1, @motionone/types@npm:^10.17.1": + version: 10.17.1 + resolution: "@motionone/types@npm:10.17.1" + checksum: 10c0/f7b16cd4f0feda0beac10173afa6de7384722f9f24767f78b7aa90f15b8a89d584073a64387b015a8e015a962fa4b47a8ce23621f47708a08676b12bb0d43bbb + languageName: node + linkType: hard + +"@motionone/utils@npm:^10.15.1, @motionone/utils@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/utils@npm:10.18.0" + dependencies: + "@motionone/types": "npm:^10.17.1" + hey-listen: "npm:^1.0.8" + tslib: "npm:^2.3.1" + checksum: 10c0/db57dbb6a131fab36dc1eb4e1f3a4575ca97563221663adce54c138de1e1a9eaf4a4a51ddf99fdab0341112159e0190b35cdeddfdbd08ba3ad1e35886a5324bb + languageName: node + linkType: hard + +"@motionone/vue@npm:^10.16.2": + version: 10.16.4 + resolution: "@motionone/vue@npm:10.16.4" + dependencies: + "@motionone/dom": "npm:^10.16.4" + tslib: "npm:^2.3.1" + checksum: 10c0/0f3096c0956848cb67c4926e65b7034d854cf704573a277679713c5a8045347c3c043f50adad0c84ee3e88c046d35ab88ec4380e5acd729f81900381e0b1fd0d + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-arm64@npm:3.0.3" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-darwin-x64@npm:3.0.3" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm64@npm:3.0.3" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-linux-arm@npm:3.0.3" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-linux-x64@npm:3.0.3" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3": + version: 3.0.3 + resolution: "@msgpackr-extract/msgpackr-extract-win32-x64@npm:3.0.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@multiformats/dns@npm:^1.0.3": + version: 1.0.6 + resolution: "@multiformats/dns@npm:1.0.6" + dependencies: + "@types/dns-packet": "npm:^5.6.5" + buffer: "npm:^6.0.3" + dns-packet: "npm:^5.6.1" + hashlru: "npm:^2.3.0" + p-queue: "npm:^8.0.1" + progress-events: "npm:^1.0.0" + uint8arrays: "npm:^5.0.2" + checksum: 10c0/ab0323ec9e697fb345a47b68e9e6ee5e2def2f00e99467ac6c53c9b6f613cff2dc2b792e9270cfe385500b6cdcc565a1c6e6e7871c584a6bc49366441bc4fa7f + languageName: node + linkType: hard + +"@multiformats/multiaddr-to-uri@npm:^9.0.1": + version: 9.0.8 + resolution: "@multiformats/multiaddr-to-uri@npm:9.0.8" + dependencies: + "@multiformats/multiaddr": "npm:^12.0.0" + checksum: 10c0/2e9a63268270a1f631aecc0555db157dc6dbb6b6afccfe280308edc504b0d91e74534b57f9a5721058c835e418e409ca6803c2a906eba862ac16174545a45a78 + languageName: node + linkType: hard + +"@multiformats/multiaddr@npm:^11.0.0": + version: 11.6.1 + resolution: "@multiformats/multiaddr@npm:11.6.1" + dependencies: + "@chainsafe/is-ip": "npm:^2.0.1" + dns-over-http-resolver: "npm:^2.1.0" + err-code: "npm:^3.0.1" + multiformats: "npm:^11.0.0" + uint8arrays: "npm:^4.0.2" + varint: "npm:^6.0.0" + checksum: 10c0/0dcd3815ea98e7e5201d2439fd8e421d7600452df964e5714d37d27423f85f4d48676f7c95857fc6917641e0ab5eca5c0a2ae0ad1b8929721119824bfcf5b8d2 + languageName: node + linkType: hard + +"@multiformats/multiaddr@npm:^12.0.0, @multiformats/multiaddr@npm:^12.1.3": + version: 12.3.1 + resolution: "@multiformats/multiaddr@npm:12.3.1" + dependencies: + "@chainsafe/is-ip": "npm:^2.0.1" + "@chainsafe/netmask": "npm:^2.0.0" + "@multiformats/dns": "npm:^1.0.3" + multiformats: "npm:^13.0.0" + uint8-varint: "npm:^2.0.1" + uint8arrays: "npm:^5.0.0" + checksum: 10c0/276a016e335a732ebaa104c684d2c4cdf0325e963ebdc6591e68928e0e9d2e268f9ab63e02830f78cdbb0b505464014dac0a415462d726f34672ebe0c355d09f + languageName: node + linkType: hard + +"@near-js/accounts@npm:1.2.1": + version: 1.2.1 + resolution: "@near-js/accounts@npm:1.2.1" + dependencies: + "@near-js/crypto": "npm:1.2.4" + "@near-js/providers": "npm:0.2.2" + "@near-js/signers": "npm:0.1.4" + "@near-js/transactions": "npm:1.2.2" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.2.2" + borsh: "npm:1.0.0" + depd: "npm:2.0.0" + is-my-json-valid: "npm:^2.20.6" + lru_map: "npm:0.4.1" + near-abi: "npm:0.1.1" + checksum: 10c0/a9fbd3d51c9ebcb02010ce5e3f5b16535b2353b953f5748db1fb2cf438855bd70987e462e60134fa0c5b08784ad7a7eb9d300c850529e8a112ef38e58eccf4cf + languageName: node + linkType: hard + +"@near-js/accounts@npm:1.2.2": + version: 1.2.2 + resolution: "@near-js/accounts@npm:1.2.2" + dependencies: + "@near-js/crypto": "npm:1.3.0" + "@near-js/providers": "npm:0.2.3" + "@near-js/signers": "npm:0.1.5" + "@near-js/transactions": "npm:1.2.3" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.3.0" + borsh: "npm:1.0.0" + depd: "npm:2.0.0" + is-my-json-valid: "npm:^2.20.6" + lru_map: "npm:0.4.1" + near-abi: "npm:0.1.1" + checksum: 10c0/06a24b0ff8d3aa572ec64feba10d7d063ec219058007de6e74ea3799b24cff4c34ce736c3650ffc4fa3bbe9befa5c85b49e1e51a6feec28c1d0785ffc2b7317c + languageName: node + linkType: hard + +"@near-js/accounts@npm:1.3.0, @near-js/accounts@npm:^1.2.1": + version: 1.3.0 + resolution: "@near-js/accounts@npm:1.3.0" + dependencies: + "@near-js/crypto": "npm:1.4.0" + "@near-js/providers": "npm:1.0.0" + "@near-js/signers": "npm:0.2.0" + "@near-js/transactions": "npm:1.3.0" + "@near-js/types": "npm:0.3.0" + "@near-js/utils": "npm:1.0.0" + "@noble/hashes": "npm:1.3.3" + borsh: "npm:1.0.0" + depd: "npm:2.0.0" + is-my-json-valid: "npm:^2.20.6" + isomorphic-unfetch: "npm:^3.1.0" + lru_map: "npm:0.4.1" + near-abi: "npm:0.1.1" + checksum: 10c0/57a61cb95759218123ebe3fdcc7575bc6f402a105929780feef842620a0eae7e265ee97fd1295039d51274f538e1bb692f6999301503ab063c343028bdb15c33 + languageName: node + linkType: hard + +"@near-js/crypto@file:../near-api-js::locator=near-wallet-selector%40workspace%3A.": + version: 0.0.0 + resolution: "@near-js/crypto@file:../near-api-js#../near-api-js::hash=620581&locator=near-wallet-selector%40workspace%3A." + dependencies: + "@hexagon/base64": "npm:1.1.26" + checksum: 10c0/95cae41d87fa45114ae018af9bc262bf714757682a94b9d406936d097e255af42d47540c5dbf7a710cc038e20f87ffc1bbb1c4fba26f2f130059df4c2ee8b599 + languageName: node + linkType: hard + +"@near-js/crypto@npm:*, @near-js/crypto@npm:1.4.0, @near-js/crypto@npm:^1.2.4": + version: 1.4.0 + resolution: "@near-js/crypto@npm:1.4.0" + dependencies: + "@near-js/types": "npm:0.3.0" + "@near-js/utils": "npm:1.0.0" + "@noble/curves": "npm:1.2.0" + borsh: "npm:1.0.0" + randombytes: "npm:2.1.0" + secp256k1: "npm:5.0.0" + checksum: 10c0/a63002feedc39e14f2326204922f1625838418910c6935f98c26f952fe98fd1267690bfcfde2aacb4aa179e2120c7ca47817d287dd13d0c1639b679fff2d14b8 + languageName: node + linkType: hard + +"@near-js/crypto@npm:1.2.4": + version: 1.2.4 + resolution: "@near-js/crypto@npm:1.2.4" + dependencies: + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.2.2" + "@noble/curves": "npm:1.2.0" + borsh: "npm:1.0.0" + randombytes: "npm:2.1.0" + checksum: 10c0/ac3d9adaedcf094c9e22bb505bf401c212419ca7023541c8755de8e4c749779dfc774e13869d441542e71a9c7430fc4b86af230e8c91f4a5619f7d5ac98f51aa + languageName: node + linkType: hard + +"@near-js/crypto@npm:1.3.0": + version: 1.3.0 + resolution: "@near-js/crypto@npm:1.3.0" + dependencies: + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.3.0" + "@noble/curves": "npm:1.2.0" + borsh: "npm:1.0.0" + randombytes: "npm:2.1.0" + secp256k1: "npm:5.0.0" + checksum: 10c0/2f866452eb1e3d61bb48ecbeee6f2e57bd236c4ec9d89a9c9b9886d0d087a7e4d7052016799093a6c0b8fa8b33471a57c7924692d51529cb724591bcd36f12fb + languageName: node + linkType: hard + +"@near-js/keystores-browser@file:../near-api-js::locator=near-wallet-selector%40workspace%3A.": + version: 0.0.0 + resolution: "@near-js/keystores-browser@file:../near-api-js#../near-api-js::hash=33676d&locator=near-wallet-selector%40workspace%3A." + dependencies: + "@hexagon/base64": "npm:1.1.26" + checksum: 10c0/bd4809489d12bf92cff87738f4ef629172efa057d2638d09f81ac69da622533f10b06adb847e4852b0e798535770d98a61edd13eb1f5fa9ac7c3b40d0957c325 + languageName: node + linkType: hard + +"@near-js/keystores-browser@npm:*, @near-js/keystores-browser@npm:0.2.0": + version: 0.2.0 + resolution: "@near-js/keystores-browser@npm:0.2.0" + dependencies: + "@near-js/crypto": "npm:1.4.0" + "@near-js/keystores": "npm:0.2.0" + checksum: 10c0/3dcb63eb6a1a090e957696583c02aeeca2349dd49d2188183e734f15845b15322480a15c710bfd6cb4fec04ec08243642f0d99098e5ca0df3a4eea37fa4b0594 + languageName: node + linkType: hard + +"@near-js/keystores-browser@npm:0.0.12": + version: 0.0.12 + resolution: "@near-js/keystores-browser@npm:0.0.12" + dependencies: + "@near-js/crypto": "npm:1.2.4" + "@near-js/keystores": "npm:0.0.12" + checksum: 10c0/61080c1b153446cc9255892d7a8ff2c60ac42faaac019b0212da37eef326b3a6255be394fc2a4258b8affa64ebc97c5acc30e31ffaa36595b94d8765f14727ae + languageName: node + linkType: hard + +"@near-js/keystores-browser@npm:0.1.0": + version: 0.1.0 + resolution: "@near-js/keystores-browser@npm:0.1.0" + dependencies: + "@near-js/crypto": "npm:1.3.0" + "@near-js/keystores": "npm:0.1.0" + checksum: 10c0/94bc041c5e169bbbf85e0a548a3f7b4fc0d05ded09275585ccaf266fff5f8796261b966dd07cb681d14b446f0be4859bc604cff7a576a936571cd24926e4e586 + languageName: node + linkType: hard + +"@near-js/keystores-node@npm:0.0.12": + version: 0.0.12 + resolution: "@near-js/keystores-node@npm:0.0.12" + dependencies: + "@near-js/crypto": "npm:1.2.4" + "@near-js/keystores": "npm:0.0.12" + checksum: 10c0/2bdea4614ffc27e5376f0b7acf63c92286a99c84710c38d15db22e751d9cb2a6cbac562ba5385a8df267f7582ca760cb8ab0de93995f0f3a07c656a856f0a7ba + languageName: node + linkType: hard + +"@near-js/keystores-node@npm:0.0.13": + version: 0.0.13 + resolution: "@near-js/keystores-node@npm:0.0.13" + dependencies: + "@near-js/crypto": "npm:1.3.0" + "@near-js/keystores": "npm:0.1.0" + checksum: 10c0/264dd0fb5ae619439344d1786969d212ca4a1481adae4837b77cedac2b2d6cfacd13c1387520335e9b97be436dbc7a3fb95ae42eb95dbcbcc6fa831793bc4ff1 + languageName: node + linkType: hard + +"@near-js/keystores-node@npm:0.1.0": + version: 0.1.0 + resolution: "@near-js/keystores-node@npm:0.1.0" + dependencies: + "@near-js/crypto": "npm:1.4.0" + "@near-js/keystores": "npm:0.2.0" + checksum: 10c0/d32a14199e699fc81b76f4e2fb4ef97ed6a7bebc8464bb65d9e44ea9724683b321f83ced5c331402af36219afa09f68a9e2406b00d377e044ed5a5f5920c83a7 + languageName: node + linkType: hard + +"@near-js/keystores@npm:0.0.12": + version: 0.0.12 + resolution: "@near-js/keystores@npm:0.0.12" + dependencies: + "@near-js/crypto": "npm:1.2.4" + "@near-js/types": "npm:0.2.1" + checksum: 10c0/810f667cc17fb5c86a008fec8d90c2bb9dc43f6f09c08c05f59582925ec6b624219ed757fa5e3e1893e62ef2053857dcc8a90d2763e63721c759d2f21e978237 + languageName: node + linkType: hard + +"@near-js/keystores@npm:0.1.0": + version: 0.1.0 + resolution: "@near-js/keystores@npm:0.1.0" + dependencies: + "@near-js/crypto": "npm:1.3.0" + "@near-js/types": "npm:0.2.1" + checksum: 10c0/089d3021726f24f5344983a3be5bd6e61e1cf379b7e0eb085e9b0a5209a9b15c13b438ba20b91ed32c73f994dc38769063661944373d953ec5aa791745c3b110 + languageName: node + linkType: hard + +"@near-js/keystores@npm:0.2.0": + version: 0.2.0 + resolution: "@near-js/keystores@npm:0.2.0" + dependencies: + "@near-js/crypto": "npm:1.4.0" + "@near-js/types": "npm:0.3.0" + checksum: 10c0/d38b281cdc6d64253bd74e57d1a3eb99e911eb69d682d730aef10495459d03e38bc0f97bc87d15723acd8a32c4d3c21564da0f332d78cf8712794f7d7f422fdb + languageName: node + linkType: hard + +"@near-js/providers@file:../near-api-js::locator=near-wallet-selector%40workspace%3A.": + version: 0.0.0 + resolution: "@near-js/providers@file:../near-api-js#../near-api-js::hash=52a55c&locator=near-wallet-selector%40workspace%3A." + dependencies: + "@hexagon/base64": "npm:1.1.26" + checksum: 10c0/1d0abd36317585fb9f7f11a16e30af7ceb153769bc597a86219daf907605bf9bec010dbd527ed91cd7605c1e6adf3706bbfdfb37f8d24f5212f5c0db08991c0d + languageName: node + linkType: hard + +"@near-js/providers@npm:*, @near-js/providers@npm:1.0.0": + version: 1.0.0 + resolution: "@near-js/providers@npm:1.0.0" + dependencies: + "@near-js/transactions": "npm:1.3.0" + "@near-js/types": "npm:0.3.0" + "@near-js/utils": "npm:1.0.0" + borsh: "npm:1.0.0" + exponential-backoff: "npm:^3.1.1" + isomorphic-unfetch: "npm:^3.1.0" + node-fetch: "npm:2.6.7" + dependenciesMeta: + node-fetch: + optional: true + checksum: 10c0/80afb5e4121baad04a131c704853cdfca0171c64b784aec47bb991d0a69467b772e663109dc86c4491768f93cff8250d9aeddbf30d31eede902e3a53ebf9a1b8 + languageName: node + linkType: hard + +"@near-js/providers@npm:0.2.2": + version: 0.2.2 + resolution: "@near-js/providers@npm:0.2.2" + dependencies: + "@near-js/transactions": "npm:1.2.2" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.2.2" + borsh: "npm:1.0.0" + http-errors: "npm:1.7.2" + node-fetch: "npm:2.6.7" + dependenciesMeta: + node-fetch: + optional: true + checksum: 10c0/794f82ecc34f6e6f18a7f8ab1029a7958b6f6a7b49448bf20287b3d643b80268e6773840a438b705fc5d9351fa0f162b24d3b955b2e897bb6f12c03012216018 + languageName: node + linkType: hard + +"@near-js/providers@npm:0.2.3": + version: 0.2.3 + resolution: "@near-js/providers@npm:0.2.3" + dependencies: + "@near-js/transactions": "npm:1.2.3" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.3.0" + borsh: "npm:1.0.0" + http-errors: "npm:1.7.2" + node-fetch: "npm:2.6.7" + dependenciesMeta: + node-fetch: + optional: true + checksum: 10c0/71934ee73a5a64c93054cdbcb3ede53cfb3533c0aadeb55589d0487ed22cd1f57ee6fa49ad82f9073f03f681f66febae8267d2af68fe5b56ad01ba7bf11a79fc + languageName: node + linkType: hard + +"@near-js/signers@file:../near-api-js::locator=near-wallet-selector%40workspace%3A.": + version: 0.0.0 + resolution: "@near-js/signers@file:../near-api-js#../near-api-js::hash=3e7792&locator=near-wallet-selector%40workspace%3A." + dependencies: + "@hexagon/base64": "npm:1.1.26" + checksum: 10c0/96ac514379992b33677986c4ad8c24a5f6acf2b4c97fb44122eea29be4b8f2de685b552a13e2e65191050c145d1d89dc23f05ebbfb444d9947115787b8aed2d1 + languageName: node + linkType: hard + +"@near-js/signers@npm:*, @near-js/signers@npm:0.2.0": + version: 0.2.0 + resolution: "@near-js/signers@npm:0.2.0" + dependencies: + "@near-js/crypto": "npm:1.4.0" + "@near-js/keystores": "npm:0.2.0" + "@noble/hashes": "npm:1.3.3" + checksum: 10c0/f7fce3f139814a3f0dd760f53492df46894f47c0ea5b02baa31496c807ffed34ed7ff3eb941f48d75db938a2dfaa1874cedbd955bd1af37eecd058b09140b379 + languageName: node + linkType: hard + +"@near-js/signers@npm:0.1.4": + version: 0.1.4 + resolution: "@near-js/signers@npm:0.1.4" + dependencies: + "@near-js/crypto": "npm:1.2.4" + "@near-js/keystores": "npm:0.0.12" + "@noble/hashes": "npm:1.3.3" + checksum: 10c0/a947a1fa4f8cdbec28a28cc62ec4049c54f7d6b8edc765545883ce935e27b7b6b65c7fa7fc8f7b599110d3f6e670842303999fc9c0bce339720c4cf908fd46e9 + languageName: node + linkType: hard + +"@near-js/signers@npm:0.1.5": + version: 0.1.5 + resolution: "@near-js/signers@npm:0.1.5" + dependencies: + "@near-js/crypto": "npm:1.3.0" + "@near-js/keystores": "npm:0.1.0" + "@noble/hashes": "npm:1.3.3" + checksum: 10c0/c588ac10705471b0d4234811b26664d75c6c745b2bb5beaec4d2beac9f5cace3d492a39b6e33989171ab1a81ff2a53a791dda5874a3a5fc492709eadb91b646c + languageName: node + linkType: hard + +"@near-js/transactions@file:../near-api-js::locator=near-wallet-selector%40workspace%3A.": + version: 0.0.0 + resolution: "@near-js/transactions@file:../near-api-js#../near-api-js::hash=4a9889&locator=near-wallet-selector%40workspace%3A." + dependencies: + "@hexagon/base64": "npm:1.1.26" + checksum: 10c0/339b59edd02079afbadd40bfec4cf9a0df0760520900c0c9812bdb0964204bfe2126883cf956a7f9e294a90a6cf8d408f31ca1be1dbfc39d1313da58e5747677 + languageName: node + linkType: hard + +"@near-js/transactions@npm:*, @near-js/transactions@npm:1.3.0": + version: 1.3.0 + resolution: "@near-js/transactions@npm:1.3.0" + dependencies: + "@near-js/crypto": "npm:1.4.0" + "@near-js/signers": "npm:0.2.0" + "@near-js/types": "npm:0.3.0" + "@near-js/utils": "npm:1.0.0" + "@noble/hashes": "npm:1.3.3" + borsh: "npm:1.0.0" + checksum: 10c0/5818f495b73471af4740d5dbaec8383558c08232f6176b91e5126c0894e81e6fea4653798a54f3e19cb53e011d155493dd7d08d134cba5bbf6fd529411298a7f + languageName: node + linkType: hard + +"@near-js/transactions@npm:1.2.2": + version: 1.2.2 + resolution: "@near-js/transactions@npm:1.2.2" + dependencies: + "@near-js/crypto": "npm:1.2.4" + "@near-js/signers": "npm:0.1.4" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.2.2" + "@noble/hashes": "npm:1.3.3" + borsh: "npm:1.0.0" + checksum: 10c0/ccba5c657af8fa8307d2ac13503426e7425989f4e2f7d32d7ebeb16c04e0bc16dc1dbb475cb0b09fa6887767aa62acd03c6e74163c23983d6b31a26728c7cccd + languageName: node + linkType: hard + +"@near-js/transactions@npm:1.2.3": + version: 1.2.3 + resolution: "@near-js/transactions@npm:1.2.3" + dependencies: + "@near-js/crypto": "npm:1.3.0" + "@near-js/signers": "npm:0.1.5" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.3.0" + "@noble/hashes": "npm:1.3.3" + borsh: "npm:1.0.0" + checksum: 10c0/6839422e2a78cdc744d38aa244a3b7cde49abee6ba4626f0ebe370cb4a64c9ec26cc5dbe9a6a0d8f020d626900a0ac3dca9226f76e7cb59d3469b8d1f933315a + languageName: node + linkType: hard + +"@near-js/types@file:../near-api-js::locator=near-wallet-selector%40workspace%3A.": + version: 0.0.0 + resolution: "@near-js/types@file:../near-api-js#../near-api-js::hash=f7cadb&locator=near-wallet-selector%40workspace%3A." + dependencies: + "@hexagon/base64": "npm:1.1.26" + checksum: 10c0/b9675a8f3c3e6ac22decd338ffa7058bf44bfeba2c8dcd7993cf1e00bcb274bc66987c53cb050ebfd1bd2678e2c92863841689d417a391bba396668bd61b91d2 + languageName: node + linkType: hard + +"@near-js/types@npm:*, @near-js/types@npm:0.3.0": + version: 0.3.0 + resolution: "@near-js/types@npm:0.3.0" + checksum: 10c0/010f844dc89cd33bdbce7c316333336ab569dcdc6d5f4cfdf8523394da791cef3f72dca2317df3c2c7018aa3efe14451a0eea0760f45e34e097e34f379e79f83 + languageName: node + linkType: hard + +"@near-js/types@npm:0.2.1, @near-js/types@npm:^0.2.1": + version: 0.2.1 + resolution: "@near-js/types@npm:0.2.1" + checksum: 10c0/35c656cb4df333ec31ac33e4ed8e8ac6fb906e7f7216793c9869d0e63e432025cf4f6d94b9b4de627ed05f28b4c13c0d405bca2bd3493a4d4613e167d8976521 + languageName: node + linkType: hard + +"@near-js/utils@file:../near-api-js::locator=near-wallet-selector%40workspace%3A.": + version: 0.0.0 + resolution: "@near-js/utils@file:../near-api-js#../near-api-js::hash=976ce7&locator=near-wallet-selector%40workspace%3A." + dependencies: + "@hexagon/base64": "npm:1.1.26" + checksum: 10c0/b796a7cccae427ed651a7cadf13e21f65dcf6302aa2b79e8fdfe95d6e7640ad77744db9adb22ed5472130b59c3db1c87640891c2f366f7fcd52be7d97f3c3516 + languageName: node + linkType: hard + +"@near-js/utils@npm:*, @near-js/utils@npm:1.0.0": + version: 1.0.0 + resolution: "@near-js/utils@npm:1.0.0" + dependencies: + "@near-js/types": "npm:0.3.0" + bs58: "npm:4.0.0" + depd: "npm:2.0.0" + mustache: "npm:4.0.0" + checksum: 10c0/788c8ae38b9dc88530cab48a3073deb715c6e1d2da3ce53ded6a5d32c83f3f6e84a27bd0b94f11dc11f2b28f9623acac45fb7e4f462b62a57ed7122f27e0425c + languageName: node + linkType: hard + +"@near-js/utils@npm:0.2.2, @near-js/utils@npm:^0.2.2": + version: 0.2.2 + resolution: "@near-js/utils@npm:0.2.2" + dependencies: + "@near-js/types": "npm:0.2.1" + bs58: "npm:4.0.0" + depd: "npm:2.0.0" + mustache: "npm:4.0.0" + checksum: 10c0/fe6464c4911e206cfcb4fe30972ad02668890681bc7ecee73b806c6df1f3ca9aabd12d044ec584918be88244d1aed24738ad314cb3c7e4b1213271dcd447bd7f + languageName: node + linkType: hard + +"@near-js/utils@npm:0.3.0": + version: 0.3.0 + resolution: "@near-js/utils@npm:0.3.0" + dependencies: + "@near-js/types": "npm:0.2.1" + bs58: "npm:4.0.0" + depd: "npm:2.0.0" + mustache: "npm:4.0.0" + checksum: 10c0/f8bf7e39eb4816f4eb330aecdbc11fd1f49771ac574214a8f0af62312115fdaba101650f6ecd1c421aff1209cb3e88f8208cbab1d7b18e50f88bf0c79b9faac5 + languageName: node + linkType: hard + +"@near-js/wallet-account@file:../near-api-js::locator=near-wallet-selector%40workspace%3A.": + version: 0.0.0 + resolution: "@near-js/wallet-account@file:../near-api-js#../near-api-js::hash=479824&locator=near-wallet-selector%40workspace%3A." + dependencies: + "@hexagon/base64": "npm:1.1.26" + checksum: 10c0/e3fc6e51c90939f952657fb899cc1b39168fb1be3968f76f8adb661796d16ef42cc134eccd3b56c696e4bba2e806c5b558d7be39255ec1cb9faf89984804d172 + languageName: node + linkType: hard + +"@near-js/wallet-account@npm:*, @near-js/wallet-account@npm:1.3.0": + version: 1.3.0 + resolution: "@near-js/wallet-account@npm:1.3.0" + dependencies: + "@near-js/accounts": "npm:1.3.0" + "@near-js/crypto": "npm:1.4.0" + "@near-js/keystores": "npm:0.2.0" + "@near-js/providers": "npm:1.0.0" + "@near-js/signers": "npm:0.2.0" + "@near-js/transactions": "npm:1.3.0" + "@near-js/types": "npm:0.3.0" + "@near-js/utils": "npm:1.0.0" + borsh: "npm:1.0.0" + checksum: 10c0/7a4ac03af09ddcf039abc0d985b8de749a8dbe05cb02a1a6dc4ddefbd21170d6cd56c31fe2662c709be1557c20b62b15afc67855baeb4564bfc70dec6f9cfc23 + languageName: node + linkType: hard + +"@near-js/wallet-account@npm:1.2.2": + version: 1.2.2 + resolution: "@near-js/wallet-account@npm:1.2.2" + dependencies: + "@near-js/accounts": "npm:1.2.1" + "@near-js/crypto": "npm:1.2.4" + "@near-js/keystores": "npm:0.0.12" + "@near-js/providers": "npm:0.2.2" + "@near-js/signers": "npm:0.1.4" + "@near-js/transactions": "npm:1.2.2" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.2.2" + borsh: "npm:1.0.0" + checksum: 10c0/29523ae2491a6952aec9288deb9fe538cefa6ad3d1f6290a1a129a6ab8247c04192cd64552aa7afb366c841ee0cb366fc3e74526c97710536f48a5e09f393add + languageName: node + linkType: hard + +"@near-js/wallet-account@npm:1.2.3": + version: 1.2.3 + resolution: "@near-js/wallet-account@npm:1.2.3" + dependencies: + "@near-js/accounts": "npm:1.2.2" + "@near-js/crypto": "npm:1.3.0" + "@near-js/keystores": "npm:0.1.0" + "@near-js/providers": "npm:0.2.3" + "@near-js/signers": "npm:0.1.5" + "@near-js/transactions": "npm:1.2.3" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.3.0" + borsh: "npm:1.0.0" + checksum: 10c0/dfd896a9d601d13341af346cabc083a9725ae3b389055346ceaf1caae9c4b4d99be397795cdf9f39b69099edd6ae8b3a2f4f931284f209d676b79774b3814c26 + languageName: node + linkType: hard + +"@near-snap/sdk@npm:0.6.0": + version: 0.6.0 + resolution: "@near-snap/sdk@npm:0.6.0" + dependencies: + "@near-wallet-selector/core": "npm:^8.2.0" + peerDependencies: + "@near-js/transactions": ^0.2.1 + bn.js: ^5.2.1 + near-api-js: ^2.1.4 + checksum: 10c0/9a9fc87a30a8af5e61ed27b3534b1b8e8518657d00250292da2f0ec4b880e7e2e7ad9b2c57fa94e3d90222d228aa2f34aa1bdc9c08c504e65cb3b28c57193294 + languageName: node + linkType: hard + +"@near-wallet-selector/core@npm:8.9.12": + version: 8.9.12 + resolution: "@near-wallet-selector/core@npm:8.9.12" + dependencies: + "@near-js/providers": "npm:0.2.2" + borsh: "npm:0.7.0" + events: "npm:3.3.0" + js-sha256: "npm:0.9.0" + near-api-js: "npm:4.0.3" + rxjs: "npm:7.8.1" + checksum: 10c0/098e665a9988d020b0c1175c10e4920f0c5e7a6e8b20a31a6b0f91d54db12e1315c19568508ec84baf1b45859540134a84b8247c31922d43c8c604aa5b7ba891 + languageName: node + linkType: hard + +"@near-wallet-selector/core@npm:^8.2.0, @near-wallet-selector/core@workspace:*, @near-wallet-selector/core@workspace:packages/core": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/core@workspace:packages/core" + dependencies: + "@near-js/crypto": "npm:*" + "@near-js/providers": "npm:*" + "@near-js/transactions": "npm:*" + "@near-js/types": "npm:*" + "@types/jest": "npm:*" + "@types/mocha": "npm:*" + "@types/node": "npm:*" + borsh: "npm:*" + jest: "npm:*" + jest-mock-extended: "npm:*" + js-sha256: "npm:*" + near-api-js: "npm:*" + rimraf: "npm:*" + rxjs: "npm:*" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"@near-wallet-selector/ethereum-wallets@workspace:packages/ethereum-wallets": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/ethereum-wallets@workspace:packages/ethereum-wallets" + dependencies: + "@near-js/providers": "npm:*" + "@near-js/transactions": "npm:*" + "@near-js/types": "npm:*" + "@near-js/utils": "npm:*" + "@near-wallet-selector/wallet-utils": "workspace:*" + "@types/node": "npm:*" + "@wagmi/core": "npm:*" + bs58: "npm:*" + near-api-js: "npm:*" + rimraf: "npm:*" + typescript: "npm:*" + viem: "npm:*" + wagmi: "npm:*" + languageName: unknown + linkType: soft + +"@near-wallet-selector/here-wallet@workspace:packages/here-wallet": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/here-wallet@workspace:packages/here-wallet" + dependencies: + "@here-wallet/core": "npm:*" + "@near-wallet-selector/core": "workspace:*" + "@types/jest": "npm:*" + "@types/node": "npm:*" + jest: "npm:*" + rimraf: "npm:*" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"@near-wallet-selector/meteor-wallet@workspace:packages/meteor-wallet": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/meteor-wallet@workspace:packages/meteor-wallet" + dependencies: + "@meteorwallet/sdk": "npm:*" + "@near-wallet-selector/core": "workspace:*" + "@types/jest": "npm:*" + "@types/node": "npm:*" + jest: "npm:*" + jest-mock-extended: "npm:*" + near-api-js: "npm:*" + rimraf: "npm:*" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"@near-wallet-selector/mintbase-wallet@workspace:packages/mintbase-wallet": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/mintbase-wallet@workspace:packages/mintbase-wallet" + dependencies: + "@mintbase-js/wallet": "npm:*" + "@types/jest": "npm:*" + "@types/node": "npm:*" + jest: "npm:*" + rimraf: "npm:*" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"@near-wallet-selector/modal-ui-js@workspace:packages/modal-ui-js": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/modal-ui-js@workspace:packages/modal-ui-js" + dependencies: + "@types/node": "npm:*" + copy-to-clipboard: "npm:*" + jest: "npm:*" + qrcode: "npm:*" + react: "npm:*" + rimraf: "npm:*" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"@near-wallet-selector/modal-ui@workspace:packages/modal-ui": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/modal-ui@workspace:packages/modal-ui" + dependencies: + "@near-wallet-selector/core": "workspace:*" + "@types/jest": "npm:*" + "@types/node": "npm:*" + "@types/react": "npm:*" + copy-to-clipboard: "npm:*" + jest: "npm:*" + qrcode: "npm:*" + react: "npm:*" + react-dom: "npm:*" + rimraf: "npm:*" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"@near-wallet-selector/my-near-wallet@workspace:*, @near-wallet-selector/my-near-wallet@workspace:packages/my-near-wallet": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/my-near-wallet@workspace:packages/my-near-wallet" + dependencies: + "@near-js/crypto": "npm:*" + "@near-js/keystores-browser": "npm:*" + "@near-js/signers": "npm:*" + "@near-js/transactions": "npm:*" + "@near-js/types": "npm:*" + "@near-js/utils": "npm:*" + "@near-js/wallet-account": "npm:*" + "@near-wallet-selector/core": "workspace:*" + "@near-wallet-selector/wallet-utils": "workspace:*" + "@types/jest": "npm:*" + "@types/node": "npm:*" + jest: "npm:*" + jest-mock-extended: "npm:*" + near-api-js: "npm:*" + rimraf: "npm:6.0.1" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"@near-wallet-selector/wallet-connect@workspace:packages/wallet-connect": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/wallet-connect@workspace:packages/wallet-connect" + dependencies: + "@near-js/types": "npm:*" + "@types/node": "npm:*" + "@walletconnect/modal": "npm:*" + "@walletconnect/sign-client": "npm:*" + "@walletconnect/types": "npm:*" + near-api-js: "npm:*" + rimraf: "npm:*" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"@near-wallet-selector/wallet-utils@npm:^8.9.12, @near-wallet-selector/wallet-utils@workspace:*, @near-wallet-selector/wallet-utils@workspace:packages/wallet-utils": + version: 0.0.0-use.local + resolution: "@near-wallet-selector/wallet-utils@workspace:packages/wallet-utils" + dependencies: + "@near-js/crypto": "npm:*" + "@near-js/providers": "npm:*" + "@near-js/signers": "npm:*" + "@near-js/transactions": "npm:*" + "@near-js/types": "npm:*" + "@near-js/utils": "npm:*" + "@near-wallet-selector/core": "workspace:*" + "@types/node": "npm:*" + near-api-js: "npm:*" + rimraf: "npm:*" + typescript: "npm:*" + languageName: unknown + linkType: soft + +"@next/env@npm:13.3.0": + version: 13.3.0 + resolution: "@next/env@npm:13.3.0" + checksum: 10c0/45ad365b2540b781a95b58e9b6226f1db4f3784cf92b6970e4fa84b590025c89063365f14285ebb04c93664ceea441493bbc0543eb5c6b47ec34c60812a7f5b1 + languageName: node + linkType: hard + +"@next/eslint-plugin-next@npm:14.2.5": + version: 14.2.5 + resolution: "@next/eslint-plugin-next@npm:14.2.5" + dependencies: + glob: "npm:10.3.10" + checksum: 10c0/13eefc2a17e37925ded8e43ae2446a73cbc5a23ade7a73c33adb75d3d2907ec75cedd8534f89a361ce8e63b5141d7e2d38aed40abd8b4eb3e7c21ba84f6bda8a + languageName: node + linkType: hard + +"@next/swc-darwin-arm64@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-darwin-arm64@npm:13.3.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-darwin-x64@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-darwin-x64@npm:13.3.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@next/swc-linux-arm64-gnu@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-linux-arm64-gnu@npm:13.3.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-arm64-musl@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-linux-arm64-musl@npm:13.3.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-linux-x64-gnu@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-linux-x64-gnu@npm:13.3.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-x64-musl@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-linux-x64-musl@npm:13.3.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-win32-arm64-msvc@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-win32-arm64-msvc@npm:13.3.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-win32-ia32-msvc@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-win32-ia32-msvc@npm:13.3.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@next/swc-win32-x64-msvc@npm:13.3.0": + version: 13.3.0 + resolution: "@next/swc-win32-x64-msvc@npm:13.3.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@ngtools/webpack@npm:16.1.8": + version: 16.1.8 + resolution: "@ngtools/webpack@npm:16.1.8" + peerDependencies: + "@angular/compiler-cli": ^16.0.0 + typescript: ">=4.9.3 <5.2" + webpack: ^5.54.0 + checksum: 10c0/215cb354ccda45b6b7eecdb19d23ad46d35a4bf37d748a821b55c3b2f9c7b55cbd7e9ca6e8a3d0bef74dfcbb340beec4240afc403d0516aface9193bb0bc9a00 + languageName: node + linkType: hard + +"@noble/ciphers@npm:0.5.3": + version: 0.5.3 + resolution: "@noble/ciphers@npm:0.5.3" + checksum: 10c0/2303217304baf51ec6caa2d984f4e640a66d3d586162ed8fecf37a00268fbf362e22cd5bceae4b0ccda4fa06ad0cb294d6a6b158260bbd2eac6a3dc0448f5254 + languageName: node + linkType: hard + +"@noble/curves@npm:1.2.0, @noble/curves@npm:~1.2.0": + version: 1.2.0 + resolution: "@noble/curves@npm:1.2.0" + dependencies: + "@noble/hashes": "npm:1.3.2" + checksum: 10c0/0bac7d1bbfb3c2286910b02598addd33243cb97c3f36f987ecc927a4be8d7d88e0fcb12b0f0ef8a044e7307d1844dd5c49bb724bfa0a79c8ec50ba60768c97f6 + languageName: node + linkType: hard + +"@noble/curves@npm:1.4.2, @noble/curves@npm:~1.4.0": + version: 1.4.2 + resolution: "@noble/curves@npm:1.4.2" + dependencies: + "@noble/hashes": "npm:1.4.0" + checksum: 10c0/65620c895b15d46e8087939db6657b46a1a15cd4e0e4de5cd84b97a0dfe0af85f33a431bb21ac88267e3dc508618245d4cb564213959d66a84d690fe18a63419 + languageName: node + linkType: hard + +"@noble/curves@npm:1.6.0, @noble/curves@npm:^1.4.0, @noble/curves@npm:~1.6.0": + version: 1.6.0 + resolution: "@noble/curves@npm:1.6.0" + dependencies: + "@noble/hashes": "npm:1.5.0" + checksum: 10c0/f3262aa4d39148e627cd82b5ac1c93f88c5bb46dd2566b5e8e52ffac3a0fc381ad30c2111656fd2bd3b0d37d43d540543e0d93a5ff96a6cb184bc3bfe10d1cd9 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.3.2": + version: 1.3.2 + resolution: "@noble/hashes@npm:1.3.2" + checksum: 10c0/2482cce3bce6a596626f94ca296e21378e7a5d4c09597cbc46e65ffacc3d64c8df73111f2265444e36a3168208628258bbbaccba2ef24f65f58b2417638a20e7 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.3.3, @noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.2": + version: 1.3.3 + resolution: "@noble/hashes@npm:1.3.3" + checksum: 10c0/23c020b33da4172c988e44100e33cd9f8f6250b68b43c467d3551f82070ebd9716e0d9d2347427aa3774c85934a35fa9ee6f026fca2117e3fa12db7bedae7668 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.4.0, @noble/hashes@npm:~1.4.0": + version: 1.4.0 + resolution: "@noble/hashes@npm:1.4.0" + checksum: 10c0/8c3f005ee72e7b8f9cff756dfae1241485187254e3f743873e22073d63906863df5d4f13d441b7530ea614b7a093f0d889309f28b59850f33b66cb26a779a4a5 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.5.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:~1.5.0": + version: 1.5.0 + resolution: "@noble/hashes@npm:1.5.0" + checksum: 10c0/1b46539695fbfe4477c0822d90c881a04d4fa2921c08c552375b444a48cac9930cb1ee68de0a3c7859e676554d0f3771999716606dc4d8f826e414c11692cdd9 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@nolyfill/is-core-module@npm:1.0.39": + version: 1.0.39 + resolution: "@nolyfill/is-core-module@npm:1.0.39" + checksum: 10c0/34ab85fdc2e0250879518841f74a30c276bca4f6c3e13526d2d1fe515e1adf6d46c25fcd5989d22ea056d76f7c39210945180b4859fc83b050e2da411aa86289 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae + languageName: node + linkType: hard + +"@npmcli/arborist@npm:^5.6.3": + version: 5.6.3 + resolution: "@npmcli/arborist@npm:5.6.3" + dependencies: + "@isaacs/string-locale-compare": "npm:^1.1.0" + "@npmcli/installed-package-contents": "npm:^1.0.7" + "@npmcli/map-workspaces": "npm:^2.0.3" + "@npmcli/metavuln-calculator": "npm:^3.0.1" + "@npmcli/move-file": "npm:^2.0.0" + "@npmcli/name-from-folder": "npm:^1.0.1" + "@npmcli/node-gyp": "npm:^2.0.0" + "@npmcli/package-json": "npm:^2.0.0" + "@npmcli/query": "npm:^1.2.0" + "@npmcli/run-script": "npm:^4.1.3" + bin-links: "npm:^3.0.3" + cacache: "npm:^16.1.3" + common-ancestor-path: "npm:^1.0.1" + hosted-git-info: "npm:^5.2.1" + json-parse-even-better-errors: "npm:^2.3.1" + json-stringify-nice: "npm:^1.1.4" + minimatch: "npm:^5.1.0" + mkdirp: "npm:^1.0.4" + mkdirp-infer-owner: "npm:^2.0.0" + nopt: "npm:^6.0.0" + npm-install-checks: "npm:^5.0.0" + npm-package-arg: "npm:^9.0.0" + npm-pick-manifest: "npm:^7.0.2" + npm-registry-fetch: "npm:^13.0.0" + npmlog: "npm:^6.0.2" + pacote: "npm:^13.6.1" + parse-conflict-json: "npm:^2.0.1" + proc-log: "npm:^2.0.0" + promise-all-reject-late: "npm:^1.0.0" + promise-call-limit: "npm:^1.0.1" + read-package-json-fast: "npm:^2.0.2" + readdir-scoped-modules: "npm:^1.1.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.7" + ssri: "npm:^9.0.0" + treeverse: "npm:^2.0.0" + walk-up-path: "npm:^1.0.0" + bin: + arborist: bin/index.js + checksum: 10c0/5647e68e8726f633d43e2d6a89c11568555aec2cd68035bf6b92f78a00e66e364e2b562f089e92b89a7c61abd5efca25f25347f00ce4bc6bc10133225b60c284 + languageName: node + linkType: hard + +"@npmcli/ci-detect@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/ci-detect@npm:2.0.0" + checksum: 10c0/a5871158bc2a6bb7a2d313fa56d4d1747486b1e7531da6b4f39e9a6e8188bb2faef212b5927bf13413a6f0a9ecebbaa849c26f5147eb1593e918c37a2c349634 + languageName: node + linkType: hard + +"@npmcli/config@npm:^4.2.1": + version: 4.2.2 + resolution: "@npmcli/config@npm:4.2.2" + dependencies: + "@npmcli/map-workspaces": "npm:^2.0.2" + ini: "npm:^3.0.0" + mkdirp-infer-owner: "npm:^2.0.0" + nopt: "npm:^6.0.0" + proc-log: "npm:^2.0.0" + read-package-json-fast: "npm:^2.0.3" + semver: "npm:^7.3.5" + walk-up-path: "npm:^1.0.0" + checksum: 10c0/d13f64301e06efe8c6fc4c5aaebc573f86092925564cb9eeaec077d121afca66c73f781d7e74b18d432694f44a86f7d86eb22925eb82e3c2ff57cd6d6948e59f + languageName: node + linkType: hard + +"@npmcli/disparity-colors@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/disparity-colors@npm:2.0.0" + dependencies: + ansi-styles: "npm:^4.3.0" + checksum: 10c0/a4aabb55fad40056b1101c2ab8bb761e0fb2733b8ad33248327f6840e5b4364b80d8aea3d3bd7f066b9ee709abc2ac87077a611c1803107a5a3b9b51ba49e7a1 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^1.0.0": + version: 1.1.1 + resolution: "@npmcli/fs@npm:1.1.1" + dependencies: + "@gar/promisify": "npm:^1.0.1" + semver: "npm:^7.3.5" + checksum: 10c0/4143c317a7542af9054018b71601e3c3392e6704e884561229695f099a71336cbd580df9a9ffb965d0024bf0ed593189ab58900fd1714baef1c9ee59c738c3e2 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^2.1.0, @npmcli/fs@npm:^2.1.1": + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" + dependencies: + "@gar/promisify": "npm:^1.1.3" + semver: "npm:^7.3.5" + checksum: 10c0/c50d087733d0d8df23be24f700f104b19922a28677aa66fdbe06ff6af6431cc4a5bb1e27683cbc661a5dafa9bafdc603e6a0378121506dfcd394b2b6dd76a187 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c37a5b4842bfdece3d14dfdb054f73fe15ed2d3da61b34ff76629fb5b1731647c49166fd2a8bf8b56fcfa51200382385ea8909a3cbecdad612310c114d3f6c99 + languageName: node + linkType: hard + +"@npmcli/git@npm:^3.0.0": + version: 3.0.2 + resolution: "@npmcli/git@npm:3.0.2" + dependencies: + "@npmcli/promise-spawn": "npm:^3.0.0" + lru-cache: "npm:^7.4.4" + mkdirp: "npm:^1.0.4" + npm-pick-manifest: "npm:^7.0.0" + proc-log: "npm:^2.0.0" + promise-inflight: "npm:^1.0.1" + promise-retry: "npm:^2.0.1" + semver: "npm:^7.3.5" + which: "npm:^2.0.2" + checksum: 10c0/26c18d98d0bf060b82692f41919847d55c00224861abbd972f47b4ecbf2494ec3afddafb8dbf98442d972e8217e3a909f95d27d040feadc061f3e8f7ccc2e2bd + languageName: node + linkType: hard + +"@npmcli/git@npm:^4.0.0": + version: 4.1.0 + resolution: "@npmcli/git@npm:4.1.0" + dependencies: + "@npmcli/promise-spawn": "npm:^6.0.0" + lru-cache: "npm:^7.4.4" + npm-pick-manifest: "npm:^8.0.0" + proc-log: "npm:^3.0.0" + promise-inflight: "npm:^1.0.1" + promise-retry: "npm:^2.0.1" + semver: "npm:^7.3.5" + which: "npm:^3.0.0" + checksum: 10c0/78591ba8f03de3954a5b5b83533455696635a8f8140c74038685fec4ee28674783a5b34a3d43840b2c5f9aa37fd0dce57eaf4ef136b52a8ec2ee183af2e40724 + languageName: node + linkType: hard + +"@npmcli/installed-package-contents@npm:^1.0.7": + version: 1.0.7 + resolution: "@npmcli/installed-package-contents@npm:1.0.7" + dependencies: + npm-bundled: "npm:^1.1.1" + npm-normalize-package-bin: "npm:^1.0.1" + bin: + installed-package-contents: index.js + checksum: 10c0/69c23b489ebfc90a28f6ee5293256bf6dae656292c8e13d52cd770fee2db2c9ecbeb7586387cd9006bc1968439edd5c75aeeb7d39ba0c8eb58905c3073bee067 + languageName: node + linkType: hard + +"@npmcli/installed-package-contents@npm:^2.0.1": + version: 2.1.0 + resolution: "@npmcli/installed-package-contents@npm:2.1.0" + dependencies: + npm-bundled: "npm:^3.0.0" + npm-normalize-package-bin: "npm:^3.0.0" + bin: + installed-package-contents: bin/index.js + checksum: 10c0/f5ecba0d45fc762f3e0d5def29fbfabd5d55e8147b01ae0a101769245c2e0038bc82a167836513a98aaed0a15c3d81fcdb232056bb8a962972a432533e518fce + languageName: node + linkType: hard + +"@npmcli/map-workspaces@npm:^2.0.2, @npmcli/map-workspaces@npm:^2.0.3": + version: 2.0.4 + resolution: "@npmcli/map-workspaces@npm:2.0.4" + dependencies: + "@npmcli/name-from-folder": "npm:^1.0.1" + glob: "npm:^8.0.1" + minimatch: "npm:^5.0.1" + read-package-json-fast: "npm:^2.0.3" + checksum: 10c0/11ab7b357dbe7a06067405619b5c2f50e6176b1d392e97d715ebbb4e51357c7b3683fb59be273e3e689893d158362c050a4c358405af91d2243de6b0cf6129d6 + languageName: node + linkType: hard + +"@npmcli/metavuln-calculator@npm:^3.0.1": + version: 3.1.1 + resolution: "@npmcli/metavuln-calculator@npm:3.1.1" + dependencies: + cacache: "npm:^16.0.0" + json-parse-even-better-errors: "npm:^2.3.1" + pacote: "npm:^13.0.3" + semver: "npm:^7.3.5" + checksum: 10c0/92bd9e5f221639cc9f9580736898a30a7acfb21eb67f0c6c3cc63ff77cb25df18f2b359b47bee8b66afff871640eac693d8ba6779eab7f8977befc7ca09833cd + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^1.0.1": + version: 1.1.2 + resolution: "@npmcli/move-file@npm:1.1.2" + dependencies: + mkdirp: "npm:^1.0.4" + rimraf: "npm:^3.0.2" + checksum: 10c0/02e946f3dafcc6743132fe2e0e2b585a96ca7265653a38df5a3e53fcf26c7c7a57fc0f861d7c689a23fdb6d6836c7eea5050c8086abf3c994feb2208d1514ff0 + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" + dependencies: + mkdirp: "npm:^1.0.4" + rimraf: "npm:^3.0.2" + checksum: 10c0/11b2151e6d1de6f6eb23128de5aa8a429fd9097d839a5190cb77aa47a6b627022c42d50fa7c47a00f1c9f8f0c1560092b09b061855d293fa0741a2a94cfb174d + languageName: node + linkType: hard + +"@npmcli/name-from-folder@npm:^1.0.1": + version: 1.0.1 + resolution: "@npmcli/name-from-folder@npm:1.0.1" + checksum: 10c0/6dbedf7c678ed1034e9905d75d3493459771bb4c4eeda147e1ab0f6a5c56d5ccc597ca9230741f2884e3f0e5fbf94e66ba6e7776d713d2a109427056bd10ae02 + languageName: node + linkType: hard + +"@npmcli/node-gyp@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/node-gyp@npm:2.0.0" + checksum: 10c0/8de88f4a602e8f868f10c660250429d34a51aaa10cb4d0f1f919d7920632be22cc47ad0e4d75097cd68e07fec5b93e41803ae3f03c1a3370badd865461e6b486 + languageName: node + linkType: hard + +"@npmcli/node-gyp@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/node-gyp@npm:3.0.0" + checksum: 10c0/5d0ac17dacf2dd6e45312af2c1ae2749bb0730fcc82da101c37d3a4fd963a5e1c5d39781e5e1e5e5828df4ab1ad4e3fdbab1d69b7cd0abebad9983efb87df985 + languageName: node + linkType: hard + +"@npmcli/package-json@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/package-json@npm:2.0.0" + dependencies: + json-parse-even-better-errors: "npm:^2.3.1" + checksum: 10c0/67aa80bb75e2f8d328c5225caf31d63499b01dd8b094e739b84de442b5411ba1040374cea113ccbcd3f0dda8b872a243e74d937b584c9040e8af6a90d42a564e + languageName: node + linkType: hard + +"@npmcli/promise-spawn@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/promise-spawn@npm:3.0.0" + dependencies: + infer-owner: "npm:^1.0.4" + checksum: 10c0/934225972d7b3e456e76b2eae40b3ece2478a361d99aa56c79f65ef7c66aa83cd55330ee44daf43174b76649b25d722b9f85120a4591cac53d884423f315465c + languageName: node + linkType: hard + +"@npmcli/promise-spawn@npm:^6.0.0, @npmcli/promise-spawn@npm:^6.0.1": + version: 6.0.2 + resolution: "@npmcli/promise-spawn@npm:6.0.2" + dependencies: + which: "npm:^3.0.0" + checksum: 10c0/d0696b8d9f7e16562cd1e520e4919000164be042b5c9998a45b4e87d41d9619fcecf2a343621c6fa85ed2671cbe87ab07e381a7faea4e5132c371dbb05893f31 + languageName: node + linkType: hard + +"@npmcli/query@npm:^1.2.0": + version: 1.2.0 + resolution: "@npmcli/query@npm:1.2.0" + dependencies: + npm-package-arg: "npm:^9.1.0" + postcss-selector-parser: "npm:^6.0.10" + semver: "npm:^7.3.7" + checksum: 10c0/f0fbc9ae07b437c0ebed20811c46ca22f654240a75223c7819510abbc7791af5c6d9e99b6bc37ecf3842a1b6457abff8deb7232ac00403c07c65df87be651311 + languageName: node + linkType: hard + +"@npmcli/run-script@npm:^4.1.0, @npmcli/run-script@npm:^4.1.3, @npmcli/run-script@npm:^4.2.0, @npmcli/run-script@npm:^4.2.1": + version: 4.2.1 + resolution: "@npmcli/run-script@npm:4.2.1" + dependencies: + "@npmcli/node-gyp": "npm:^2.0.0" + "@npmcli/promise-spawn": "npm:^3.0.0" + node-gyp: "npm:^9.0.0" + read-package-json-fast: "npm:^2.0.3" + which: "npm:^2.0.2" + checksum: 10c0/b658b239a0132d3b7262ab94e16ca1bf4abe2987557015086c94768bd0cfdf7cded9a6c04f2efb58d63ae4f3bbb794caffaedc00b3d64ad7136bcf8c181b9b10 + languageName: node + linkType: hard + +"@npmcli/run-script@npm:^6.0.0": + version: 6.0.2 + resolution: "@npmcli/run-script@npm:6.0.2" + dependencies: + "@npmcli/node-gyp": "npm:^3.0.0" + "@npmcli/promise-spawn": "npm:^6.0.0" + node-gyp: "npm:^9.0.0" + read-package-json-fast: "npm:^3.0.0" + which: "npm:^3.0.0" + checksum: 10c0/8c6ab2895eb6a2f24b1cd85dc934edae2d1c02af3acfc383655857f3893ed133d393876add800600d2e1702f8b62133d7cf8da00d81a1c885cc6029ef9e8e691 + languageName: node + linkType: hard + +"@nrwl/devkit@npm:16.0.0": + version: 16.0.0 + resolution: "@nrwl/devkit@npm:16.0.0" + dependencies: + "@nx/devkit": "npm:16.0.0" + checksum: 10c0/5ccbf789575117e19db9375294fe608ff2069200ca80bd27787257654c2a7f38ee4065324e2df28191f7ef24a19b87d88626db3d4505cf81af6a1e1496d79bb4 + languageName: node + linkType: hard + +"@nrwl/js@npm:16.0.0": + version: 16.0.0 + resolution: "@nrwl/js@npm:16.0.0" + dependencies: + "@nx/js": "npm:16.0.0" + checksum: 10c0/8f19228ef88dbc404d713d1daafa10297c21ca456f512dd41600a53f78819f21f96d8434133f77fab25f15ca999a63012835683f51febe30990745222578181b + languageName: node + linkType: hard + +"@nrwl/nx-cloud@npm:16.0.5": + version: 16.0.5 + resolution: "@nrwl/nx-cloud@npm:16.0.5" + dependencies: + nx-cloud: "npm:16.0.5" + checksum: 10c0/3d3d5900026a2984ddd6d7d5962a5c8ed1bc84fb7ea52268604d5b05cf77cca8757edf42ddacf774ca778937c133f94ab330e968296a4b0f14a962b9f9fc9f4e + languageName: node + linkType: hard + +"@nrwl/rollup@npm:16.0.0": + version: 16.0.0 + resolution: "@nrwl/rollup@npm:16.0.0" + dependencies: + "@nx/rollup": "npm:16.0.0" + checksum: 10c0/76db51002b17bc157f45e715ab38d5c08ae473b53f161fdbd3c9a920d0f13e45de3b6e83b3159246ae398fc29b7ccec27c5b987d49fdda7c8fcd4041c364c3f4 + languageName: node + linkType: hard + +"@nrwl/tao@npm:16.0.0": + version: 16.0.0 + resolution: "@nrwl/tao@npm:16.0.0" + dependencies: + nx: "npm:16.0.0" + bin: + tao: index.js + checksum: 10c0/35b9c8fe56c0a4ecec0accf13029732e9ec5a4c94b588afea270f6b908d804789b2245293e77083f011e6f2c09ad9e6d01fadf0888423689acfebaeb8e4490e9 + languageName: node + linkType: hard + +"@nrwl/tao@npm:16.4.0": + version: 16.4.0 + resolution: "@nrwl/tao@npm:16.4.0" + dependencies: + nx: "npm:16.4.0" + bin: + tao: index.js + checksum: 10c0/15d2aefbe9706749ab5cfb312b72f8fac579154b9adae1a21cdedbab4862148c7a73c3beeb2637867834c744111145640e08f7d649a378de45e88fa949ef3c30 + languageName: node + linkType: hard + +"@nrwl/webpack@npm:16.0.0": + version: 16.0.0 + resolution: "@nrwl/webpack@npm:16.0.0" + dependencies: + "@nx/webpack": "npm:16.0.0" + checksum: 10c0/6b3286c1ac961c47d6aef7f329d2fdfe68c047c34f56fd2b27e2ba1b4cd55706a67c3e55d4b2011e2d670e409eba56aece69b72da927fbedab77ffc185ddac06 + languageName: node + linkType: hard + +"@nrwl/workspace@npm:16.0.0": + version: 16.0.0 + resolution: "@nrwl/workspace@npm:16.0.0" + dependencies: + "@nx/workspace": "npm:16.0.0" + checksum: 10c0/dc7edfd418b9eae8ab5ec072f942a82b54a2c3f9f8fdd1c0db3cb194c3aba5dcbd203ea09d9c0d682d439b4664a42d55dc4b038c40829c29065b0b26e23c8159 + languageName: node + linkType: hard + +"@nx/devkit@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/devkit@npm:16.0.0" + dependencies: + "@nrwl/devkit": "npm:16.0.0" + ejs: "npm:^3.1.7" + ignore: "npm:^5.0.4" + semver: "npm:7.3.4" + tmp: "npm:~0.2.1" + tslib: "npm:^2.3.0" + peerDependencies: + nx: ">= 15 <= 17" + checksum: 10c0/df6d88eeed53f4ac31b09e5808fd8c623703e2aa9ab89704fbd714ed6aef6ac5b906540e62b591892f4ea34dfe550a68e1ae91de1642cedfffc4099bda56e734 + languageName: node + linkType: hard + +"@nx/js@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/js@npm:16.0.0" + dependencies: + "@babel/core": "npm:^7.15.0" + "@babel/plugin-proposal-class-properties": "npm:^7.14.5" + "@babel/plugin-proposal-decorators": "npm:^7.14.5" + "@babel/plugin-transform-runtime": "npm:^7.15.0" + "@babel/preset-env": "npm:^7.15.0" + "@babel/preset-typescript": "npm:^7.15.0" + "@babel/runtime": "npm:^7.14.8" + "@nrwl/js": "npm:16.0.0" + "@nx/devkit": "npm:16.0.0" + "@nx/workspace": "npm:16.0.0" + "@phenomnomnominal/tsquery": "npm:~5.0.1" + babel-plugin-const-enum: "npm:^1.0.1" + babel-plugin-macros: "npm:^2.8.0" + babel-plugin-transform-typescript-metadata: "npm:^0.3.1" + chalk: "npm:^4.1.0" + fast-glob: "npm:3.2.7" + fs-extra: "npm:^11.1.0" + ignore: "npm:^5.0.4" + js-tokens: "npm:^4.0.0" + minimatch: "npm:3.0.5" + source-map-support: "npm:0.5.19" + tree-kill: "npm:1.2.2" + tslib: "npm:^2.3.0" + checksum: 10c0/288a80557859640a82801a27c7089c9302ae482ed46261661af2ef2f3c27d0d1903c8382ebda614b9fd58067c6befb1c4a4d792835f45da35b03388119ca9f6a + languageName: node + linkType: hard + +"@nx/nx-darwin-arm64@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/nx-darwin-arm64@npm:16.0.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@nx/nx-darwin-arm64@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-darwin-arm64@npm:16.4.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@nx/nx-darwin-x64@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/nx-darwin-x64@npm:16.0.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@nx/nx-darwin-x64@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-darwin-x64@npm:16.4.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@nx/nx-freebsd-x64@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-freebsd-x64@npm:16.4.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@nx/nx-linux-arm-gnueabihf@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/nx-linux-arm-gnueabihf@npm:16.0.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@nx/nx-linux-arm-gnueabihf@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-linux-arm-gnueabihf@npm:16.4.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@nx/nx-linux-arm64-gnu@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/nx-linux-arm64-gnu@npm:16.0.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@nx/nx-linux-arm64-gnu@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-linux-arm64-gnu@npm:16.4.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@nx/nx-linux-arm64-musl@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/nx-linux-arm64-musl@npm:16.0.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@nx/nx-linux-arm64-musl@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-linux-arm64-musl@npm:16.4.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@nx/nx-linux-x64-gnu@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/nx-linux-x64-gnu@npm:16.0.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@nx/nx-linux-x64-gnu@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-linux-x64-gnu@npm:16.4.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@nx/nx-linux-x64-musl@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/nx-linux-x64-musl@npm:16.0.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@nx/nx-linux-x64-musl@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-linux-x64-musl@npm:16.4.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@nx/nx-win32-arm64-msvc@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/nx-win32-arm64-msvc@npm:16.0.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@nx/nx-win32-arm64-msvc@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-win32-arm64-msvc@npm:16.4.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@nx/nx-win32-x64-msvc@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/nx-win32-x64-msvc@npm:16.0.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@nx/nx-win32-x64-msvc@npm:16.4.0": + version: 16.4.0 + resolution: "@nx/nx-win32-x64-msvc@npm:16.4.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@nx/rollup@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/rollup@npm:16.0.0" + dependencies: + "@nrwl/rollup": "npm:16.0.0" + "@nx/devkit": "npm:16.0.0" + "@nx/js": "npm:16.0.0" + "@rollup/plugin-babel": "npm:^5.3.0" + "@rollup/plugin-commonjs": "npm:^20.0.0" + "@rollup/plugin-image": "npm:^2.1.0" + "@rollup/plugin-json": "npm:^4.1.0" + "@rollup/plugin-node-resolve": "npm:^13.0.4" + autoprefixer: "npm:^10.4.9" + babel-plugin-transform-async-to-promises: "npm:^0.8.15" + chalk: "npm:^4.1.0" + dotenv: "npm:~10.0.0" + postcss: "npm:^8.4.14" + rollup: "npm:^2.56.2" + rollup-plugin-copy: "npm:^3.4.0" + rollup-plugin-peer-deps-external: "npm:^2.2.4" + rollup-plugin-postcss: "npm:^4.0.1" + rollup-plugin-typescript2: "npm:0.34.1" + rxjs: "npm:^6.5.4" + tslib: "npm:^2.3.0" + checksum: 10c0/101fb67af3a99adc25de043e26a9dcd0286b297fc4b4ecca1dcd9d933a0981be5db3137bd491581ecbb11090be224b4e31b39741a4b659e98629222419e2b6ec + languageName: node + linkType: hard + +"@nx/webpack@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/webpack@npm:16.0.0" + dependencies: + "@babel/core": "npm:^7.15.0" + "@nrwl/webpack": "npm:16.0.0" + "@nx/devkit": "npm:16.0.0" + "@nx/js": "npm:16.0.0" + autoprefixer: "npm:^10.4.9" + babel-loader: "npm:^9.1.2" + chalk: "npm:^4.1.0" + chokidar: "npm:^3.5.1" + copy-webpack-plugin: "npm:^10.2.4" + css-loader: "npm:^6.4.0" + css-minimizer-webpack-plugin: "npm:^3.4.1" + dotenv: "npm:~10.0.0" + file-loader: "npm:^6.2.0" + fork-ts-checker-webpack-plugin: "npm:7.2.13" + ignore: "npm:^5.0.4" + less: "npm:4.1.3" + less-loader: "npm:11.1.0" + license-webpack-plugin: "npm:^4.0.2" + loader-utils: "npm:^2.0.3" + mini-css-extract-plugin: "npm:~2.4.7" + parse5: "npm:4.0.0" + postcss: "npm:^8.4.14" + postcss-import: "npm:~14.1.0" + postcss-loader: "npm:^6.1.1" + rxjs: "npm:^6.5.4" + sass: "npm:^1.42.1" + sass-loader: "npm:^12.2.0" + source-map-loader: "npm:^3.0.0" + style-loader: "npm:^3.3.0" + stylus: "npm:^0.55.0" + stylus-loader: "npm:^7.1.0" + terser-webpack-plugin: "npm:^5.3.3" + ts-loader: "npm:^9.3.1" + ts-node: "npm:10.9.1" + tsconfig-paths: "npm:^4.1.2" + tsconfig-paths-webpack-plugin: "npm:4.0.0" + tslib: "npm:^2.3.0" + webpack: "npm:^5.75.0" + webpack-dev-server: "npm:^4.9.3" + webpack-node-externals: "npm:^3.0.0" + webpack-subresource-integrity: "npm:^5.1.0" + checksum: 10c0/094a9342dc7233e6e7e32a9429ee96385f7c9420f44afe9dcb7995ae6e7a5f4d17ae7ad2491fb4d3213c06588cce77dcb19b7d1543baef8d9e849009c146afa4 + languageName: node + linkType: hard + +"@nx/workspace@npm:16.0.0": + version: 16.0.0 + resolution: "@nx/workspace@npm:16.0.0" + dependencies: + "@nrwl/workspace": "npm:16.0.0" + "@nx/devkit": "npm:16.0.0" + "@parcel/watcher": "npm:2.0.4" + chalk: "npm:^4.1.0" + chokidar: "npm:^3.5.1" + cli-cursor: "npm:3.1.0" + cli-spinners: "npm:2.6.1" + dotenv: "npm:~10.0.0" + figures: "npm:3.2.0" + flat: "npm:^5.0.2" + ignore: "npm:^5.0.4" + minimatch: "npm:3.0.5" + npm-run-path: "npm:^4.0.1" + nx: "npm:16.0.0" + open: "npm:^8.4.0" + rxjs: "npm:^6.5.4" + tmp: "npm:~0.2.1" + tslib: "npm:^2.3.0" + yargs: "npm:^17.6.2" + yargs-parser: "npm:21.1.1" + checksum: 10c0/f9facbefbd699962318d9ba8923a5f99d8d0045cdbe76721c9c2b1fbebeb5de951a89387a352c2ea87d754768b3613ce74b95a8ca4b16f027ea4c254c929fc7d + languageName: node + linkType: hard + +"@octokit/auth-token@npm:^3.0.0": + version: 3.0.4 + resolution: "@octokit/auth-token@npm:3.0.4" + checksum: 10c0/abdf5e2da36344de9727c70ba782d58004f5ae1da0f65fa9bc9216af596ef23c0e4675f386df2f6886806612558091d603564051b693b0ad1986aa6160b7a231 + languageName: node + linkType: hard + +"@octokit/core@npm:^4.2.1": + version: 4.2.4 + resolution: "@octokit/core@npm:4.2.4" + dependencies: + "@octokit/auth-token": "npm:^3.0.0" + "@octokit/graphql": "npm:^5.0.0" + "@octokit/request": "npm:^6.0.0" + "@octokit/request-error": "npm:^3.0.0" + "@octokit/types": "npm:^9.0.0" + before-after-hook: "npm:^2.2.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10c0/e54081a56884e628d1804837fddcd48c10d516117bb891551c8dc9d8e3dad449aeb9b4677ca71e8f0e76268c2b7656c953099506679aaa4666765228474a3ce6 + languageName: node + linkType: hard + +"@octokit/endpoint@npm:^7.0.0": + version: 7.0.6 + resolution: "@octokit/endpoint@npm:7.0.6" + dependencies: + "@octokit/types": "npm:^9.0.0" + is-plain-object: "npm:^5.0.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10c0/fd147a55010b54af7567bf90791359f7096a1c9916a2b7c72f8afd0c53141338b3d78da3a4ab3e3bdfeb26218a1b73735432d8987ccc04996b1019219299f115 + languageName: node + linkType: hard + +"@octokit/graphql@npm:^5.0.0": + version: 5.0.6 + resolution: "@octokit/graphql@npm:5.0.6" + dependencies: + "@octokit/request": "npm:^6.0.0" + "@octokit/types": "npm:^9.0.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10c0/de1d839d97fe6d96179925f6714bf96e7af6f77929892596bb4211adab14add3291fc5872b269a3d0e91a4dcf248d16096c82606c4a43538cf241b815c2e2a36 + languageName: node + linkType: hard + +"@octokit/openapi-types@npm:^18.0.0": + version: 18.1.1 + resolution: "@octokit/openapi-types@npm:18.1.1" + checksum: 10c0/856d3bb9f8c666e837dd5e8b8c216ee4342b9ed63ff8da922ca4ce5883ed1dfbec73390eb13d69fbcb4703a4c8b8b6a586df3b0e675ff93bf3d46b5b4fe0968e + languageName: node + linkType: hard + +"@octokit/plugin-paginate-rest@npm:^6.1.2": + version: 6.1.2 + resolution: "@octokit/plugin-paginate-rest@npm:6.1.2" + dependencies: + "@octokit/tsconfig": "npm:^1.0.2" + "@octokit/types": "npm:^9.2.3" + peerDependencies: + "@octokit/core": ">=4" + checksum: 10c0/def241c4f00b864822ab6414eaadd8679a6d332004c7e77467cfc1e6d5bdcc453c76bd185710ee942e4df201f9dd2170d960f46af5b14ef6f261a0068f656364 + languageName: node + linkType: hard + +"@octokit/plugin-retry@npm:^4.1.3": + version: 4.1.6 + resolution: "@octokit/plugin-retry@npm:4.1.6" + dependencies: + "@octokit/types": "npm:^9.0.0" + bottleneck: "npm:^2.15.3" + peerDependencies: + "@octokit/core": ">=3" + checksum: 10c0/becda71309b8fde99b2daa6c5ab7c9774adfabc2c950da53741bb911c6cd4db1b4d9cc878498580f8b8e881f491450a57bfaa50b6ad749aea421766675dbebdb + languageName: node + linkType: hard + +"@octokit/plugin-throttling@npm:^5.2.3": + version: 5.2.3 + resolution: "@octokit/plugin-throttling@npm:5.2.3" + dependencies: + "@octokit/types": "npm:^9.0.0" + bottleneck: "npm:^2.15.3" + peerDependencies: + "@octokit/core": ^4.0.0 + checksum: 10c0/dd43da3e49c7e92aa6f513aae80702a13899cd9265d9538443063bd9c56e250177b4672bda0894843915b6424c01350647366af2763479f43d6dfe9983d43325 + languageName: node + linkType: hard + +"@octokit/request-error@npm:^3.0.0": + version: 3.0.3 + resolution: "@octokit/request-error@npm:3.0.3" + dependencies: + "@octokit/types": "npm:^9.0.0" + deprecation: "npm:^2.0.0" + once: "npm:^1.4.0" + checksum: 10c0/1e252ac193c8af23b709909911aa327ed5372cbafcba09e4aff41e0f640a7c152579ab0a60311a92e37b4e7936392d59ee4c2feae5cdc387ee8587a33d8afa60 + languageName: node + linkType: hard + +"@octokit/request@npm:^6.0.0": + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" + dependencies: + "@octokit/endpoint": "npm:^7.0.0" + "@octokit/request-error": "npm:^3.0.0" + "@octokit/types": "npm:^9.0.0" + is-plain-object: "npm:^5.0.0" + node-fetch: "npm:^2.6.7" + universal-user-agent: "npm:^6.0.0" + checksum: 10c0/6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b + languageName: node + linkType: hard + +"@octokit/tsconfig@npm:^1.0.2": + version: 1.0.2 + resolution: "@octokit/tsconfig@npm:1.0.2" + checksum: 10c0/84db70b495beeed69259dd4def14cdfb600edeb65ef32811558c99413ee2b414ed10bff9c4dcc7a43451d0fd36b4925ada9ef7d4272b5eae38cb005cc2f459ac + languageName: node + linkType: hard + +"@octokit/types@npm:^9.0.0, @octokit/types@npm:^9.2.3": + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" + dependencies: + "@octokit/openapi-types": "npm:^18.0.0" + checksum: 10c0/2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 + languageName: node + linkType: hard + +"@parcel/bundler-default@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/bundler-default@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/graph": "npm:3.2.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + checksum: 10c0/797e7494c82f2669a8d8d409b2efa2c956d2ac4edd5cd1b85560bbd7696483edb8ec220f66cdd88f7a3e47cfb346f33b21818c96f5a2bac098d5eef5085475d8 + languageName: node + linkType: hard + +"@parcel/cache@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/cache@npm:2.12.0" + dependencies: + "@parcel/fs": "npm:2.12.0" + "@parcel/logger": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + lmdb: "npm:2.8.5" + peerDependencies: + "@parcel/core": ^2.12.0 + checksum: 10c0/ef80c88a754d2e1c9161eb8e518f4a4b03c186001384100d037e333a1c00b4a701b0f6c1743a1663c6bb7e20d09c8582584f44ebea0fc6d81c81b4a81a1d0b6b + languageName: node + linkType: hard + +"@parcel/codeframe@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/codeframe@npm:2.12.0" + dependencies: + chalk: "npm:^4.1.0" + checksum: 10c0/23a73d8a5b6a7612ab6a5918ad52631f58d3529758730517a0ce151f0c533e5b4b1788278dd521d4863dd0e0b972afb590af69cb8523b14e809279825da549a1 + languageName: node + linkType: hard + +"@parcel/compressor-raw@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/compressor-raw@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + checksum: 10c0/e057b38d3cae862048f3777ea97544e60465e8efc16ecab0b8602d9c2787c80a09ac3bb338f773af5c17a6b4356caf103986951b47022fdf02b21c5e0b600033 + languageName: node + linkType: hard + +"@parcel/config-default@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/config-default@npm:2.12.0" + dependencies: + "@parcel/bundler-default": "npm:2.12.0" + "@parcel/compressor-raw": "npm:2.12.0" + "@parcel/namer-default": "npm:2.12.0" + "@parcel/optimizer-css": "npm:2.12.0" + "@parcel/optimizer-htmlnano": "npm:2.12.0" + "@parcel/optimizer-image": "npm:2.12.0" + "@parcel/optimizer-svgo": "npm:2.12.0" + "@parcel/optimizer-swc": "npm:2.12.0" + "@parcel/packager-css": "npm:2.12.0" + "@parcel/packager-html": "npm:2.12.0" + "@parcel/packager-js": "npm:2.12.0" + "@parcel/packager-raw": "npm:2.12.0" + "@parcel/packager-svg": "npm:2.12.0" + "@parcel/packager-wasm": "npm:2.12.0" + "@parcel/reporter-dev-server": "npm:2.12.0" + "@parcel/resolver-default": "npm:2.12.0" + "@parcel/runtime-browser-hmr": "npm:2.12.0" + "@parcel/runtime-js": "npm:2.12.0" + "@parcel/runtime-react-refresh": "npm:2.12.0" + "@parcel/runtime-service-worker": "npm:2.12.0" + "@parcel/transformer-babel": "npm:2.12.0" + "@parcel/transformer-css": "npm:2.12.0" + "@parcel/transformer-html": "npm:2.12.0" + "@parcel/transformer-image": "npm:2.12.0" + "@parcel/transformer-js": "npm:2.12.0" + "@parcel/transformer-json": "npm:2.12.0" + "@parcel/transformer-postcss": "npm:2.12.0" + "@parcel/transformer-posthtml": "npm:2.12.0" + "@parcel/transformer-raw": "npm:2.12.0" + "@parcel/transformer-react-refresh-wrap": "npm:2.12.0" + "@parcel/transformer-svg": "npm:2.12.0" + peerDependencies: + "@parcel/core": ^2.12.0 + checksum: 10c0/c3fec515c14479f1a0041db79a70198f04bea94a03a7f331257f057de178d4e0061b68853c2e83d45f891d09fadb8b4361f38421832b6e116edd46f8e0ee51a9 + languageName: node + linkType: hard + +"@parcel/core@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/core@npm:2.12.0" + dependencies: + "@mischnic/json-sourcemap": "npm:^0.1.0" + "@parcel/cache": "npm:2.12.0" + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/events": "npm:2.12.0" + "@parcel/fs": "npm:2.12.0" + "@parcel/graph": "npm:3.2.0" + "@parcel/logger": "npm:2.12.0" + "@parcel/package-manager": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/profiler": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + "@parcel/types": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + "@parcel/workers": "npm:2.12.0" + abortcontroller-polyfill: "npm:^1.1.9" + base-x: "npm:^3.0.8" + browserslist: "npm:^4.6.6" + clone: "npm:^2.1.1" + dotenv: "npm:^7.0.0" + dotenv-expand: "npm:^5.1.0" + json5: "npm:^2.2.0" + msgpackr: "npm:^1.9.9" + nullthrows: "npm:^1.1.1" + semver: "npm:^7.5.2" + checksum: 10c0/ab6b4bc1e95b0aaee23c5aec8479cf6681cf84a0c422e1001a3a0f3957aa28756851eb201a89d8b55ce84912c8987a76597f77193ade771f034c1c33a07ece44 + languageName: node + linkType: hard + +"@parcel/diagnostic@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/diagnostic@npm:2.12.0" + dependencies: + "@mischnic/json-sourcemap": "npm:^0.1.0" + nullthrows: "npm:^1.1.1" + checksum: 10c0/61c2fce32a1abdf343a4d2e3a109779dc2a9c255059e4dd70ad9b4b3bd5b11b676d0c42bc77e4b32e886ef471be018b25b952baa9da137c066410642d2d0507f + languageName: node + linkType: hard + +"@parcel/events@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/events@npm:2.12.0" + checksum: 10c0/0f0a0b02086b81d68cf8f239414e9e09b5a6eca6dddfd22d2e922979b2d85b03e6f68bcafa2c6434c46867c908e25f2002f47f0ed5551f2674a75f4d6c5731ff + languageName: node + linkType: hard + +"@parcel/fs@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/fs@npm:2.12.0" + dependencies: + "@parcel/rust": "npm:2.12.0" + "@parcel/types": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + "@parcel/watcher": "npm:^2.0.7" + "@parcel/workers": "npm:2.12.0" + peerDependencies: + "@parcel/core": ^2.12.0 + checksum: 10c0/5d9ebf62e80dc3781fcd1eb763da46188115e254d285690383539a085aeaf9d864a54655046223ea42815b9b308ecba80d9af53cff6390c6bbb37d2b29df8e35 + languageName: node + linkType: hard + +"@parcel/graph@npm:3.2.0": + version: 3.2.0 + resolution: "@parcel/graph@npm:3.2.0" + dependencies: + nullthrows: "npm:^1.1.1" + checksum: 10c0/acb98a9c44dbabaa38e2a7b6b07aa489d75dc207ed6107ea43575d3c68ebf388a65a982d85677c7d00cd2d7bb6f8a6f75df9618a53389e9f640aa9346fb75c3b + languageName: node + linkType: hard + +"@parcel/logger@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/logger@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/events": "npm:2.12.0" + checksum: 10c0/b33782bbf0cfff30169a4ee8dd3a1d14c9b2c0d4781715e26b5dc6f2321ddff8ca84eca8de40bccb1a8c5d3ce847494408f5db63bbeddcdaaf9b82b1cc376a17 + languageName: node + linkType: hard + +"@parcel/markdown-ansi@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/markdown-ansi@npm:2.12.0" + dependencies: + chalk: "npm:^4.1.0" + checksum: 10c0/0c203c70ab1eb12f4976c32b086b2abf5dc841b42310610e70e1e713fe915acfd0942b56a78456811a9ee150226bb44052910a3f98ea56289aafa36b6ce89e27 + languageName: node + linkType: hard + +"@parcel/namer-default@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/namer-default@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + checksum: 10c0/5baffe07af2329315b9d2b897565b915038246afaa3269d81bcd5eb4bcc7a21771bf1171918d68a67c099584b006167beeefa4716fb4557aae4bc112ebaf4159 + languageName: node + linkType: hard + +"@parcel/node-resolver-core@npm:3.3.0": + version: 3.3.0 + resolution: "@parcel/node-resolver-core@npm:3.3.0" + dependencies: + "@mischnic/json-sourcemap": "npm:^0.1.0" + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/fs": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + semver: "npm:^7.5.2" + checksum: 10c0/9a2731763514c0a54da9710e1131b5960b928900cbc33faf67d07a892cf9ed9f1b11ed2653e574e8363c4527d16e008365917b7b09eb3b9ee727fd244a5f51ee + languageName: node + linkType: hard + +"@parcel/optimizer-css@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/optimizer-css@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + "@parcel/utils": "npm:2.12.0" + browserslist: "npm:^4.6.6" + lightningcss: "npm:^1.22.1" + nullthrows: "npm:^1.1.1" + checksum: 10c0/537e84a85fda7a2f73acd2a55842ffe9846abb02d18a7518baf8ae140fc6140a26bb1988285dbccb49a883fdc8597eabbb6d4882500bf160b97d6d93e3664677 + languageName: node + linkType: hard + +"@parcel/optimizer-htmlnano@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/optimizer-htmlnano@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + htmlnano: "npm:^2.0.0" + nullthrows: "npm:^1.1.1" + posthtml: "npm:^0.16.5" + svgo: "npm:^2.4.0" + checksum: 10c0/487e0fa99e975e6f9add2759e4ad412c0595d7b80d5dde9e186700fa54a9ecb9d1cb611fbd5a0d3392fda3a01050d95e3ded53ca8b50ede3203fe77af489cd0b + languageName: node + linkType: hard + +"@parcel/optimizer-image@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/optimizer-image@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + "@parcel/workers": "npm:2.12.0" + peerDependencies: + "@parcel/core": ^2.12.0 + checksum: 10c0/f050c569548ec8330c65d0e9b6f6b15d5761e14e704ef16b950db19ae0d6b5a30fd42a38bb04841561244e8ab8f7fb781d9e9f1418ae84858fe7ad325a4be494 + languageName: node + linkType: hard + +"@parcel/optimizer-svgo@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/optimizer-svgo@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + svgo: "npm:^2.4.0" + checksum: 10c0/dc49c565d8f15b4f78ee70910a9c527f25316f0440e9cba6c5b8af1562d34708e5276b35f1e1ea26e7911d6d5c60fa82be6627517fe818df6f69eba5f0f6813f + languageName: node + linkType: hard + +"@parcel/optimizer-swc@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/optimizer-swc@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + "@parcel/utils": "npm:2.12.0" + "@swc/core": "npm:^1.3.36" + nullthrows: "npm:^1.1.1" + checksum: 10c0/52f52182769ebb76248deab85893dacf183e6ff9a87a56c3589331cb0e37debb7ae8fa819386fe23f69b15e6b39823879e20816b10fbab3d316018a94b0c653c + languageName: node + linkType: hard + +"@parcel/package-manager@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/package-manager@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/fs": "npm:2.12.0" + "@parcel/logger": "npm:2.12.0" + "@parcel/node-resolver-core": "npm:3.3.0" + "@parcel/types": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + "@parcel/workers": "npm:2.12.0" + "@swc/core": "npm:^1.3.36" + semver: "npm:^7.5.2" + peerDependencies: + "@parcel/core": ^2.12.0 + checksum: 10c0/3ebffe05b293332f69c34479ea0b51a9fa3449ab56eef1b0ec9487c4feacf45df6dec9d8dcb67203398249093370f7d884dc0cb6b6ee15ee8c5db9768579060c + languageName: node + linkType: hard + +"@parcel/packager-css@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/packager-css@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + "@parcel/utils": "npm:2.12.0" + lightningcss: "npm:^1.22.1" + nullthrows: "npm:^1.1.1" + checksum: 10c0/a7293c84c67b9e07b8b8cdc48d96037e05bc50daa8a2aba64b23797fea87e259bf7046a5b969917531db33b8f2387463c817e569a34f42d791bbfacb074268ea + languageName: node + linkType: hard + +"@parcel/packager-html@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/packager-html@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/types": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + posthtml: "npm:^0.16.5" + checksum: 10c0/099eccde796af61cb6f153fcd69c49d22b4acc430d3652a4f2e5d4124c1cf2d6782213048436fd8e9e5521a52b1219e7bc02d38be89ce97e6f70899d3be31d7f + languageName: node + linkType: hard + +"@parcel/packager-js@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/packager-js@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + "@parcel/types": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + globals: "npm:^13.2.0" + nullthrows: "npm:^1.1.1" + checksum: 10c0/89214e8d35f6dc35c2fd0c2b11ec608703dbc52435a7a6141e0b8fc676610fa09c2210cc93490ea4b3581ae0bc13f307dd5515402c939980e1c6bf90148d34e2 + languageName: node + linkType: hard + +"@parcel/packager-raw@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/packager-raw@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + checksum: 10c0/c1539179a62674460fea65c9fd1b150aedd596723e79d4e949bf5bd667defd6a72ed73552033e4cdd2b854aa6d5022201797b746e5deb633b41f1de716716af9 + languageName: node + linkType: hard + +"@parcel/packager-svg@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/packager-svg@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/types": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + posthtml: "npm:^0.16.4" + checksum: 10c0/58f877d470e5b50adb7eca837f571cbd221cf6681bc83d08146e4aeae4e1430a2e3363beb4a62cfc6952f4f8ded1746889545b4c946300258268a11b298047fd + languageName: node + linkType: hard + +"@parcel/packager-wasm@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/packager-wasm@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + checksum: 10c0/bd3ccd6f9a0506b26b0d708ded6cea3ac53df5c49426086b556ba7f9f1351aba010da3e0795a1f6944cdc306cffc08eed249bb8444aa4f44d9de0e3d1592810d + languageName: node + linkType: hard + +"@parcel/plugin@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/plugin@npm:2.12.0" + dependencies: + "@parcel/types": "npm:2.12.0" + checksum: 10c0/2030a3e1ee6b8cdfdf07935b085f7731e286651d7455b84a7f635016c580af715deffb893c5bc9fb3e0126db4511d3f2b592ee17b61108d001339d51ef56f9bf + languageName: node + linkType: hard + +"@parcel/profiler@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/profiler@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/events": "npm:2.12.0" + chrome-trace-event: "npm:^1.0.2" + checksum: 10c0/3caa9014da88f7435c43396fd1bb413c35134801699943717079a92fcd3ab0a0974c98b98473c5bc1ef434ce8203483fb96af642c1d64e20266625499ca4b4fe + languageName: node + linkType: hard + +"@parcel/reporter-cli@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/reporter-cli@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/types": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + chalk: "npm:^4.1.0" + term-size: "npm:^2.2.1" + checksum: 10c0/0fee616377d540e11e61fd827a8886d8b8fc4985f87da694945b5a7f3da821bcbb0c5d7a31d72cdf12546c7bf555f7ef5c15d75b71ab157d93cacf0972b29006 + languageName: node + linkType: hard + +"@parcel/reporter-dev-server@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/reporter-dev-server@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + checksum: 10c0/bd875c937214aa877805413dbfce89d95dc2578098693991cce26624366cc19807a678c2779edbc620f9618db244807a2271027fb5e328318618a4666b33e512 + languageName: node + linkType: hard + +"@parcel/reporter-tracer@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/reporter-tracer@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + chrome-trace-event: "npm:^1.0.3" + nullthrows: "npm:^1.1.1" + checksum: 10c0/5ab33196ce4a62681d5017d908da354e25a6d367cdf0a849cd408c673bac61d3674316438a4c4c7eebb26f865e5ee3c1b8cda897c92dfa7211c0107c48d04388 + languageName: node + linkType: hard + +"@parcel/resolver-default@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/resolver-default@npm:2.12.0" + dependencies: + "@parcel/node-resolver-core": "npm:3.3.0" + "@parcel/plugin": "npm:2.12.0" + checksum: 10c0/22b1e4223070c962570928390c6cb77e866d4a3ede1a7019ad3ed2fed75604a2d78c335d65aa646dd753f05916397b56416aef52009cace9b56fd39bf6362457 + languageName: node + linkType: hard + +"@parcel/runtime-browser-hmr@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/runtime-browser-hmr@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + checksum: 10c0/126babc8dbd7937e94a38bed1527190a203c20bcba7b66f85b1ddbce81ec54b3fb0579f371284cb7290b70fc46b88eaaa1ee6c9d9e3b739b6267d6902dc82f93 + languageName: node + linkType: hard + +"@parcel/runtime-js@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/runtime-js@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + checksum: 10c0/01cb236c0ab6f6a170ead43d519ba02092d9b1805f2b8e8cce6f0fec4cb2c37e885c8ce0ff8ae4c7025499d1e36d1ff755f5e8018172c4245c01e97c7a3e9a21 + languageName: node + linkType: hard + +"@parcel/runtime-react-refresh@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/runtime-react-refresh@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + react-error-overlay: "npm:6.0.9" + react-refresh: "npm:^0.9.0" + checksum: 10c0/9efd3903118169f1eb4c176afbc4b8ee38d8b516a72dd189fec4d05c5b216e105aa6a77dd87aa5966923a648ed2c227e83feaed6c706a6fd5ebe0cdf255d5d46 + languageName: node + linkType: hard + +"@parcel/runtime-service-worker@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/runtime-service-worker@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + checksum: 10c0/014e44aa15bcc81002713af1cfc88a1d010f3ba6565ec5ea560231540a79cb76fecb11336ac019fb4c9c21a59477a1ce2d9f1a67f85e07be6b7da4498cfa17b3 + languageName: node + linkType: hard + +"@parcel/rust@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/rust@npm:2.12.0" + checksum: 10c0/38d8e5c69b31b3f7eb431f479c250f7a4e37f7814ce0aa16d42c300fffa25659da0ea8ca8e22534fa2b935dc8559507829d0cdebb588756aa4c3619565dcd3e3 + languageName: node + linkType: hard + +"@parcel/source-map@npm:^2.1.1": + version: 2.1.1 + resolution: "@parcel/source-map@npm:2.1.1" + dependencies: + detect-libc: "npm:^1.0.3" + checksum: 10c0/cea8450e152666be413556f0d100f125e81646bffc497e7c792bd9fc5067d052f1a008c8404ce1cd3a587d58b9ef57207ada89149cf2c705e71b1978308045f6 + languageName: node + linkType: hard + +"@parcel/transformer-babel@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-babel@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + "@parcel/utils": "npm:2.12.0" + browserslist: "npm:^4.6.6" + json5: "npm:^2.2.0" + nullthrows: "npm:^1.1.1" + semver: "npm:^7.5.2" + checksum: 10c0/b7398cc2ef02fd76010bb522fc72e562ce835643365a37ccfc56368121e5c9d890bef14fffa40a8c69e4a26f13ee7d6da8d8e8590957bd4f363b5aa1c4f7d43d + languageName: node + linkType: hard + +"@parcel/transformer-css@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-css@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + "@parcel/utils": "npm:2.12.0" + browserslist: "npm:^4.6.6" + lightningcss: "npm:^1.22.1" + nullthrows: "npm:^1.1.1" + checksum: 10c0/b3ad2591bca09a5696791b9a50bfb8efb825e92313740d6e3988ae1345d70965e92f9d42d58ae5571749e422d9018681aa49bddeafa939f3948a6993cc1cb4c8 + languageName: node + linkType: hard + +"@parcel/transformer-html@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-html@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + posthtml: "npm:^0.16.5" + posthtml-parser: "npm:^0.10.1" + posthtml-render: "npm:^3.0.0" + semver: "npm:^7.5.2" + srcset: "npm:4" + checksum: 10c0/1e73c1afe87b8db36e358752fe1b89d466cd9bfe66dda34fca58ad28ab10931553b16ba82096eeb266a0d90e62d6c9e455e3b32dbdf550f4212193898d4c45fd + languageName: node + linkType: hard + +"@parcel/transformer-image@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-image@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + "@parcel/workers": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + peerDependencies: + "@parcel/core": ^2.12.0 + checksum: 10c0/e361fa97d81b3dc2dfe011342321f1d2afd4fd41a9c2791522d8f39e2dc94714a2a0b9d291eb73437b2023fd1493ad37046d6b1ee925ec80daa18261cd5767a4 + languageName: node + linkType: hard + +"@parcel/transformer-js@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-js@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + "@parcel/utils": "npm:2.12.0" + "@parcel/workers": "npm:2.12.0" + "@swc/helpers": "npm:^0.5.0" + browserslist: "npm:^4.6.6" + nullthrows: "npm:^1.1.1" + regenerator-runtime: "npm:^0.13.7" + semver: "npm:^7.5.2" + peerDependencies: + "@parcel/core": ^2.12.0 + checksum: 10c0/8a438f0ae93539338ac3f2e2666377e75fb8a5a5386c84485d6cf5f0ad5e52862a80da89c35ca01fae10184ccc7567f1347679fd3b514f7b86643dc83dbce6a6 + languageName: node + linkType: hard + +"@parcel/transformer-json@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-json@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + json5: "npm:^2.2.0" + checksum: 10c0/41f931eacf89b5a792ca906594eeafa75d9fe5d0af85af7cf42e77f04e1d31de5bd64d3da9fcf0bdf745f3af252dd727ac318b12cc1c3a1345d19c5096ad98d8 + languageName: node + linkType: hard + +"@parcel/transformer-postcss@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-postcss@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + clone: "npm:^2.1.1" + nullthrows: "npm:^1.1.1" + postcss-value-parser: "npm:^4.2.0" + semver: "npm:^7.5.2" + checksum: 10c0/24c3a7eedd741ec1df43bed64b7e02e0132e1c85b9a93322fc994fd2a7f457c4a45f624edf3c064630f947749eb1eb89cb5a502db3f6a39286880afe09020e5a + languageName: node + linkType: hard + +"@parcel/transformer-posthtml@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-posthtml@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + posthtml: "npm:^0.16.5" + posthtml-parser: "npm:^0.10.1" + posthtml-render: "npm:^3.0.0" + semver: "npm:^7.5.2" + checksum: 10c0/ae626c15d5dda547850511a8aed41ba35e9496861dbba24efcb904693ced003a74f25c454b0f4bb96500725dd7e09ed4d09becccc48c0c8cdf8fde3ba02aa3f0 + languageName: node + linkType: hard + +"@parcel/transformer-raw@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-raw@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + checksum: 10c0/3a23729c6f91ef22c106995f730483dd375f81c11f8bb37ff485d6f3c111f64445d437796d470b42bdd2ee75cc3c4a142911fbcddd1676c8659dfc5e886917d2 + languageName: node + linkType: hard + +"@parcel/transformer-react-refresh-wrap@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-react-refresh-wrap@npm:2.12.0" + dependencies: + "@parcel/plugin": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + react-refresh: "npm:^0.9.0" + checksum: 10c0/37dd835182bf71fcee5858f0ab16d5683d2827b4930095ed9fffbd496e431a7f1c53de598f294220b7ff27cd5264d5f1fa750d974a1ee02fb39342fd867b6f9c + languageName: node + linkType: hard + +"@parcel/transformer-svg@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/transformer-svg@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/plugin": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + posthtml: "npm:^0.16.5" + posthtml-parser: "npm:^0.10.1" + posthtml-render: "npm:^3.0.0" + semver: "npm:^7.5.2" + checksum: 10c0/8916bdc0b36c60b32963e015c43a8bcd8cc2b15cc11b7611c49af6a4e4d63c2aabea0aa0fde31a78278eec25f88b52b3e56d8382dc2db5f3a401e63312115f3a + languageName: node + linkType: hard + +"@parcel/types@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/types@npm:2.12.0" + dependencies: + "@parcel/cache": "npm:2.12.0" + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/fs": "npm:2.12.0" + "@parcel/package-manager": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + "@parcel/workers": "npm:2.12.0" + utility-types: "npm:^3.10.0" + checksum: 10c0/a8aa61ad7cc8218a41fe27c206031b30c55eab59cd4affdfac7d15ddcfb80a1969c22086760b7d4fbdd63016dbfe3278d462e04b9c12e474780fe154caf08150 + languageName: node + linkType: hard + +"@parcel/utils@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/utils@npm:2.12.0" + dependencies: + "@parcel/codeframe": "npm:2.12.0" + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/logger": "npm:2.12.0" + "@parcel/markdown-ansi": "npm:2.12.0" + "@parcel/rust": "npm:2.12.0" + "@parcel/source-map": "npm:^2.1.1" + chalk: "npm:^4.1.0" + nullthrows: "npm:^1.1.1" + checksum: 10c0/888e2352d056ceff4e81d0cf4ae4eb8f322b0a8c4eb9e6f6aa5f916adc3f27c90369d5580b4f316029bf5160294a607795181a6bb368741524c177a14b2aa7c7 + languageName: node + linkType: hard + +"@parcel/watcher-android-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-android-arm64@npm:2.4.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-x64@npm:2.4.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-wasm@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-wasm@npm:2.4.1" + dependencies: + is-glob: "npm:^4.0.3" + micromatch: "npm:^4.0.5" + napi-wasm: "npm:^1.1.0" + checksum: 10c0/30a0d4e618c4867a5990025df56dff3a31a01f78b2d108b31e6ed7fabf123a13fd79ee292f547b572e439d272a6157c2ba9fb8e527456951c14283f872bdc16f + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-arm64@npm:2.4.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-ia32@npm:2.4.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-x64@npm:2.4.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:2.0.4": + version: 2.0.4 + resolution: "@parcel/watcher@npm:2.0.4" + dependencies: + node-addon-api: "npm:^3.2.1" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10c0/7c7e8fa2879371135039cf6559122808fc37d436701dd804f3e0b4897d5690a2c92c73795ad4a015d8715990bfb4226dc6d14fea429522fcb5662ce370508e8d + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.0.7, @parcel/watcher@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher@npm:2.4.1" + dependencies: + "@parcel/watcher-android-arm64": "npm:2.4.1" + "@parcel/watcher-darwin-arm64": "npm:2.4.1" + "@parcel/watcher-darwin-x64": "npm:2.4.1" + "@parcel/watcher-freebsd-x64": "npm:2.4.1" + "@parcel/watcher-linux-arm-glibc": "npm:2.4.1" + "@parcel/watcher-linux-arm64-glibc": "npm:2.4.1" + "@parcel/watcher-linux-arm64-musl": "npm:2.4.1" + "@parcel/watcher-linux-x64-glibc": "npm:2.4.1" + "@parcel/watcher-linux-x64-musl": "npm:2.4.1" + "@parcel/watcher-win32-arm64": "npm:2.4.1" + "@parcel/watcher-win32-ia32": "npm:2.4.1" + "@parcel/watcher-win32-x64": "npm:2.4.1" + detect-libc: "npm:^1.0.3" + is-glob: "npm:^4.0.3" + micromatch: "npm:^4.0.5" + node-addon-api: "npm:^7.0.0" + node-gyp: "npm:latest" + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 10c0/33b7112094b9eb46c234d824953967435b628d3d93a0553255e9910829b84cab3da870153c3a870c31db186dc58f3b2db81382fcaee3451438aeec4d786a6211 + languageName: node + linkType: hard + +"@parcel/workers@npm:2.12.0": + version: 2.12.0 + resolution: "@parcel/workers@npm:2.12.0" + dependencies: + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/logger": "npm:2.12.0" + "@parcel/profiler": "npm:2.12.0" + "@parcel/types": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + nullthrows: "npm:^1.1.1" + peerDependencies: + "@parcel/core": ^2.12.0 + checksum: 10c0/0f5e12e7997d806d6694e91a6c5968c34e1967f50bab3c09296589b2b279ffcd1c8de735845448de350e510a5657ba0aeb4b2c5c04cab81c4c7a57f70d567f5e + languageName: node + linkType: hard + +"@peersyst/near-mobile-signer@npm:1.1.0": + version: 1.1.0 + resolution: "@peersyst/near-mobile-signer@npm:1.1.0" + dependencies: + bn.js: "npm:^5.2.1" + borsh: "npm:^0.7.0" + js-sha256: "npm:^0.9.0" + near-api-js: "npm:^4.0.0" + parcel: "npm:^2.9.3" + checksum: 10c0/d6326a26b563566870dffeceb26769a43df93f27d78fc8f38396c025957a5edd9fc7b7941cb7162a2180dcd3c06dc3395a7afa5c6972b7e8fb4f34ba36a5a546 + languageName: node + linkType: hard + +"@phenomnomnominal/tsquery@npm:~5.0.1": + version: 5.0.1 + resolution: "@phenomnomnominal/tsquery@npm:5.0.1" + dependencies: + esquery: "npm:^1.4.0" + peerDependencies: + typescript: ^3 || ^4 || ^5 + checksum: 10c0/e241410cd321eb19543acd1e5f3cd973e02ecca918b2382d44e35e316fa1e41cf2d81abc4a2ee48cca023541d3812e94b491f215894375f5a2576e948b934e89 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pmmmwh/react-refresh-webpack-plugin@npm:0.5.7": + version: 0.5.7 + resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.7" + dependencies: + ansi-html-community: "npm:^0.0.8" + common-path-prefix: "npm:^3.0.0" + core-js-pure: "npm:^3.8.1" + error-stack-parser: "npm:^2.0.6" + find-up: "npm:^5.0.0" + html-entities: "npm:^2.1.0" + loader-utils: "npm:^2.0.0" + schema-utils: "npm:^3.0.0" + source-map: "npm:^0.7.3" + peerDependencies: + "@types/webpack": 4.x || 5.x + react-refresh: ">=0.10.0 <1.0.0" + sockjs-client: ^1.4.0 + type-fest: ">=0.17.0 <3.0.0" + webpack: ">=4.43.0 <6.0.0" + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + "@types/webpack": + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + checksum: 10c0/11bc7e2223eda628ee90164b2dbdc8e3c7a83c4d43871c3ed217e3cae6f70df76e7e2270da9377c77ca7ef14e3886654e8497cce3792011f34dd07730fc59706 + languageName: node + linkType: hard + +"@pnpm/config.env-replace@npm:^1.1.0": + version: 1.1.0 + resolution: "@pnpm/config.env-replace@npm:1.1.0" + checksum: 10c0/4cfc4a5c49ab3d0c6a1f196cfd4146374768b0243d441c7de8fa7bd28eaab6290f514b98490472cc65dbd080d34369447b3e9302585e1d5c099befd7c8b5e55f + languageName: node + linkType: hard + +"@pnpm/network.ca-file@npm:^1.0.1": + version: 1.0.2 + resolution: "@pnpm/network.ca-file@npm:1.0.2" + dependencies: + graceful-fs: "npm:4.2.10" + checksum: 10c0/95f6e0e38d047aca3283550719155ce7304ac00d98911e4ab026daedaf640a63bd83e3d13e17c623fa41ac72f3801382ba21260bcce431c14fbbc06430ecb776 + languageName: node + linkType: hard + +"@pnpm/npm-conf@npm:^2.1.0": + version: 2.3.1 + resolution: "@pnpm/npm-conf@npm:2.3.1" + dependencies: + "@pnpm/config.env-replace": "npm:^1.1.0" + "@pnpm/network.ca-file": "npm:^1.0.1" + config-chain: "npm:^1.1.11" + checksum: 10c0/778a3a34ff7d6000a2594d2a9821f873f737bc56367865718b2cf0ba5d366e49689efe7975148316d7afd8e6f1dcef7d736fbb6ea7ef55caadd1dc93a36bb302 + languageName: node + linkType: hard + +"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/aspromise@npm:1.1.2" + checksum: 10c0/a83343a468ff5b5ec6bff36fd788a64c839e48a07ff9f4f813564f58caf44d011cd6504ed2147bf34835bd7a7dd2107052af755961c6b098fd8902b4f6500d0f + languageName: node + linkType: hard + +"@protobufjs/base64@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/base64@npm:1.1.2" + checksum: 10c0/eec925e681081af190b8ee231f9bad3101e189abbc182ff279da6b531e7dbd2a56f1f306f37a80b1be9e00aa2d271690d08dcc5f326f71c9eed8546675c8caf6 + languageName: node + linkType: hard + +"@protobufjs/codegen@npm:^2.0.4": + version: 2.0.4 + resolution: "@protobufjs/codegen@npm:2.0.4" + checksum: 10c0/26ae337c5659e41f091606d16465bbcc1df1f37cc1ed462438b1f67be0c1e28dfb2ca9f294f39100c52161aef82edf758c95d6d75650a1ddf31f7ddee1440b43 + languageName: node + linkType: hard + +"@protobufjs/eventemitter@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/eventemitter@npm:1.1.0" + checksum: 10c0/1eb0a75180e5206d1033e4138212a8c7089a3d418c6dfa5a6ce42e593a4ae2e5892c4ef7421f38092badba4040ea6a45f0928869989411001d8c1018ea9a6e70 + languageName: node + linkType: hard + +"@protobufjs/fetch@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/fetch@npm:1.1.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.1" + "@protobufjs/inquire": "npm:^1.1.0" + checksum: 10c0/cda6a3dc2d50a182c5865b160f72077aac197046600091dbb005dd0a66db9cce3c5eaed6d470ac8ed49d7bcbeef6ee5f0bc288db5ff9a70cbd003e5909065233 + languageName: node + linkType: hard + +"@protobufjs/float@npm:^1.0.2": + version: 1.0.2 + resolution: "@protobufjs/float@npm:1.0.2" + checksum: 10c0/18f2bdede76ffcf0170708af15c9c9db6259b771e6b84c51b06df34a9c339dbbeec267d14ce0bddd20acc142b1d980d983d31434398df7f98eb0c94a0eb79069 + languageName: node + linkType: hard + +"@protobufjs/inquire@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/inquire@npm:1.1.0" + checksum: 10c0/64372482efcba1fb4d166a2664a6395fa978b557803857c9c03500e0ac1013eb4b1aacc9ed851dd5fc22f81583670b4f4431bae186f3373fedcfde863ef5921a + languageName: node + linkType: hard + +"@protobufjs/path@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/path@npm:1.1.2" + checksum: 10c0/cece0a938e7f5dfd2fa03f8c14f2f1cf8b0d6e13ac7326ff4c96ea311effd5fb7ae0bba754fbf505312af2e38500250c90e68506b97c02360a43793d88a0d8b4 + languageName: node + linkType: hard + +"@protobufjs/pool@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/pool@npm:1.1.0" + checksum: 10c0/eda2718b7f222ac6e6ad36f758a92ef90d26526026a19f4f17f668f45e0306a5bd734def3f48f51f8134ae0978b6262a5c517c08b115a551756d1a3aadfcf038 + languageName: node + linkType: hard + +"@protobufjs/utf8@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/utf8@npm:1.1.0" + checksum: 10c0/a3fe31fe3fa29aa3349e2e04ee13dc170cc6af7c23d92ad49e3eeaf79b9766264544d3da824dba93b7855bd6a2982fb40032ef40693da98a136d835752beb487 + languageName: node + linkType: hard + +"@ramper/constants@npm:0.0.15": + version: 0.0.15 + resolution: "@ramper/constants@npm:0.0.15" + dependencies: + "@ramper/utils": "npm:0.0.2" + checksum: 10c0/1b4e0976a7164e12a9a8d613c4d106a4ca87eff16bf08b407967dac17760594d1013524c3a46f4ab87ed1734faf6b0a8d532b5ab232fc085ee889cf11bbe2f14 + languageName: node + linkType: hard + +"@ramper/core@npm:0.0.30": + version: 0.0.30 + resolution: "@ramper/core@npm:0.0.30" + dependencies: + "@ramper/logger": "npm:0.0.1" + "@ramper/utils": "npm:0.0.2" + jwt-decode: "npm:^3.1.2" + jwt-simple: "npm:0.5.6" + postmate: "npm:1.5.2" + checksum: 10c0/f02340b6594d88c9c159e6a855be3fd88345dafc9bc42323031c830ec187e2af15f0bfacdf9f55398cc4149b5014b6d9becd9029553b4421273915b96d6a2436 + languageName: node + linkType: hard + +"@ramper/logger@npm:0.0.1": + version: 0.0.1 + resolution: "@ramper/logger@npm:0.0.1" + checksum: 10c0/bf8000b6b34b833afa3d53bf9b0a42898a7c4acedd7a7ffeea0938375186c97d10b58bbbc76dea28bd9f93c4a342987b48011624b9ab0fa5b9d54db555e007e1 + languageName: node + linkType: hard + +"@ramper/near@npm:0.0.30": + version: 0.0.30 + resolution: "@ramper/near@npm:0.0.30" + dependencies: + "@ramper/constants": "npm:0.0.15" + "@ramper/core": "npm:0.0.30" + "@ramper/sdk-loader": "npm:0.0.1" + "@ramper/utils": "npm:0.0.2" + checksum: 10c0/a5375ce4572929304dfb62833df1eafdec3f6a6236f101e43e93f9c8d91a12508011b27534a3e8dd8da6469e95e4d59893ee901eceef367ec9e812610a4b9d2c + languageName: node + linkType: hard + +"@ramper/sdk-loader@npm:0.0.1": + version: 0.0.1 + resolution: "@ramper/sdk-loader@npm:0.0.1" + checksum: 10c0/ce87e93f5849b208ae39d53e13dbdb75507ae95ec6b76902a10e2caca072fb7d262c8a8f53886dbffb6eadfa3ff55c91cc0e91df4f6338458c9f51ea229554ea + languageName: node + linkType: hard + +"@ramper/utils@npm:0.0.2": + version: 0.0.2 + resolution: "@ramper/utils@npm:0.0.2" + dependencies: + "@types/ua-parser-js": "npm:^0.7.36" + await-to-js: "npm:3.0.0" + slugify: "npm:^1.6.5" + ua-parser-js: "npm:^1.0.2" + checksum: 10c0/e9f580deaef062fe660c021e431d6adfcbae14d81965ec3429e086248cfa8ab23209379b074b6559fc09212e5284e3dc8968764bcf4a2aae5dbd2ad81dc57ccc + languageName: node + linkType: hard + +"@rollup/plugin-babel@npm:^5.3.0": + version: 5.3.1 + resolution: "@rollup/plugin-babel@npm:5.3.1" + dependencies: + "@babel/helper-module-imports": "npm:^7.10.4" + "@rollup/pluginutils": "npm:^3.1.0" + peerDependencies: + "@babel/core": ^7.0.0 + "@types/babel__core": ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + "@types/babel__core": + optional: true + checksum: 10c0/2766134dd5567c0d4fd6909d1f511ce9bf3bd9d727e1bc5ffdd6097a3606faca324107ae8e0961839ee4dbb45e5e579ae601efe472fc0a271259aea79920cafa + languageName: node + linkType: hard + +"@rollup/plugin-commonjs@npm:^20.0.0": + version: 20.0.0 + resolution: "@rollup/plugin-commonjs@npm:20.0.0" + dependencies: + "@rollup/pluginutils": "npm:^3.1.0" + commondir: "npm:^1.0.1" + estree-walker: "npm:^2.0.1" + glob: "npm:^7.1.6" + is-reference: "npm:^1.2.1" + magic-string: "npm:^0.25.7" + resolve: "npm:^1.17.0" + peerDependencies: + rollup: ^2.38.3 + checksum: 10c0/cfcdaa3643392d4fe988e8c264c9c84e5093b4f72a8fe5ecb689906afc8f5d4a8b5e09a5ad59fc88fac87c283fa5f33b88f3157fe5c2e3183db556349b499076 + languageName: node + linkType: hard + +"@rollup/plugin-image@npm:^2.1.0": + version: 2.1.1 + resolution: "@rollup/plugin-image@npm:2.1.1" + dependencies: + "@rollup/pluginutils": "npm:^3.1.0" + mini-svg-data-uri: "npm:^1.2.3" + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + checksum: 10c0/fd39cf21526add621a3844f8057fe25a113a8953755545bb15135f45c9490c3e3493c8826be008c243748f8efd33cd21c79ed9bc4048fe2e3d1dd10f27a97cf4 + languageName: node + linkType: hard + +"@rollup/plugin-json@npm:^4.1.0": + version: 4.1.0 + resolution: "@rollup/plugin-json@npm:4.1.0" + dependencies: + "@rollup/pluginutils": "npm:^3.0.8" + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + checksum: 10c0/9fc4a3ee60929afcb5269ebda602914d1cf5dc020808f85be90c0a5a2ba9ca26136b0284a1935984861f0549a1e1db30fc372906c14425f5da4909f0fd21e5ea + languageName: node + linkType: hard + +"@rollup/plugin-node-resolve@npm:^13.0.4": + version: 13.3.0 + resolution: "@rollup/plugin-node-resolve@npm:13.3.0" + dependencies: + "@rollup/pluginutils": "npm:^3.1.0" + "@types/resolve": "npm:1.17.1" + deepmerge: "npm:^4.2.2" + is-builtin-module: "npm:^3.1.0" + is-module: "npm:^1.0.0" + resolve: "npm:^1.19.0" + peerDependencies: + rollup: ^2.42.0 + checksum: 10c0/6caa32a8304a20f1c9953111b25e9543f4de7d254958d81ce0158ad909e4493946bc2060c4ace23d9748b560ebc84c920ee7bc1b7d50dbf8ba852ef13c91af58 + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^3.0.8, @rollup/pluginutils@npm:^3.1.0": + version: 3.1.0 + resolution: "@rollup/pluginutils@npm:3.1.0" + dependencies: + "@types/estree": "npm:0.0.39" + estree-walker: "npm:^1.0.1" + picomatch: "npm:^2.2.2" + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: 10c0/7151753160d15ba2b259461a6c25b3932150994ea52dba8fd3144f634c7647c2e56733d986e2c15de67c4d96a9ee7d6278efa6d2e626a7169898fd64adc0f90c + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^4.1.2": + version: 4.2.1 + resolution: "@rollup/pluginutils@npm:4.2.1" + dependencies: + estree-walker: "npm:^2.0.1" + picomatch: "npm:^2.2.2" + checksum: 10c0/3ee56b2c8f1ed8dfd0a92631da1af3a2dfdd0321948f089b3752b4de1b54dc5076701eadd0e5fc18bd191b77af594ac1db6279e83951238ba16bf8a414c64c48 + languageName: node + linkType: hard + +"@rtsao/scc@npm:^1.1.0": + version: 1.1.0 + resolution: "@rtsao/scc@npm:1.1.0" + checksum: 10c0/b5bcfb0d87f7d1c1c7c0f7693f53b07866ed9fec4c34a97a8c948fb9a7c0082e416ce4d3b60beb4f5e167cbe04cdeefbf6771320f3ede059b9ce91188c409a5b + languageName: node + linkType: hard + +"@rushstack/eslint-patch@npm:^1.3.3": + version: 1.10.4 + resolution: "@rushstack/eslint-patch@npm:1.10.4" + checksum: 10c0/de312bd7a3cb0f313c9720029eb719d8762fe54946cce2d33ac142b1cbb5817c4a5a92518dfa476c26311602d37f5a8f7caa90a0c73e3d6a56f9a05d2799c172 + languageName: node + linkType: hard + +"@safe-global/safe-apps-provider@npm:0.18.1": + version: 0.18.1 + resolution: "@safe-global/safe-apps-provider@npm:0.18.1" + dependencies: + "@safe-global/safe-apps-sdk": "npm:^8.1.0" + events: "npm:^3.3.0" + checksum: 10c0/9e6375132930cedd0935baa83cd026eb7c76776c7285edb3ff8c463ccf48d1e30cea03e93ce7199d3d3efa3cd035495e5f85fc361e203a2c03a4459d1989e726 + languageName: node + linkType: hard + +"@safe-global/safe-apps-provider@npm:0.18.3": + version: 0.18.3 + resolution: "@safe-global/safe-apps-provider@npm:0.18.3" + dependencies: + "@safe-global/safe-apps-sdk": "npm:^9.1.0" + events: "npm:^3.3.0" + checksum: 10c0/7209d761919969c0859e8b9df90fd46d06c3f99424ecd5fd2e0b8080355a880504ee5c46cebcbaa94739f8be272f3f7102a9f40cf18e6c1a9e1d7dd29d77ee5e + languageName: node + linkType: hard + +"@safe-global/safe-apps-sdk@npm:8.1.0, @safe-global/safe-apps-sdk@npm:^8.1.0": + version: 8.1.0 + resolution: "@safe-global/safe-apps-sdk@npm:8.1.0" + dependencies: + "@safe-global/safe-gateway-typescript-sdk": "npm:^3.5.3" + viem: "npm:^1.0.0" + checksum: 10c0/b6ad0610ed39a1106ecaa91e43e411dd361c8d4d9712cb3fbf15342950b86fe387ce331bd91ae35c90ff036cded188272ea45ca4e3534c2b08e7e3d3c741fdc0 + languageName: node + linkType: hard + +"@safe-global/safe-apps-sdk@npm:9.1.0, @safe-global/safe-apps-sdk@npm:^9.1.0": + version: 9.1.0 + resolution: "@safe-global/safe-apps-sdk@npm:9.1.0" + dependencies: + "@safe-global/safe-gateway-typescript-sdk": "npm:^3.5.3" + viem: "npm:^2.1.1" + checksum: 10c0/13af12122a6b1388e7960a76c3c421ea5ed97197646cd1f720b9fc9364fad0cc8f21cda23773130cd6bf57935a36f9e93f5222569cc80382709430b5cad26fda + languageName: node + linkType: hard + +"@safe-global/safe-gateway-typescript-sdk@npm:^3.5.3": + version: 3.22.2 + resolution: "@safe-global/safe-gateway-typescript-sdk@npm:3.22.2" + checksum: 10c0/4c61c6bc1e720ceb98e7812ef060e40120e130c385f1ac8012a99155179b0651e12f608e053c9e4d1d7917881920e9e3b15c3c90805f9bbb7f28d80b13d04381 + languageName: node + linkType: hard + +"@schematics/angular@npm:15.2.8": + version: 15.2.8 + resolution: "@schematics/angular@npm:15.2.8" + dependencies: + "@angular-devkit/core": "npm:15.2.8" + "@angular-devkit/schematics": "npm:15.2.8" + jsonc-parser: "npm:3.2.0" + checksum: 10c0/bccf40617f694f984742636b86338cd0fb69edb0e2dbdd325b53c1d7278eaaf9ce5b026298aae146c850d2fa3e51140f9c40e9db1ca85aa2e1dbfeae7acf03dd + languageName: node + linkType: hard + +"@schematics/angular@npm:16.1.8": + version: 16.1.8 + resolution: "@schematics/angular@npm:16.1.8" + dependencies: + "@angular-devkit/core": "npm:16.1.8" + "@angular-devkit/schematics": "npm:16.1.8" + jsonc-parser: "npm:3.2.0" + checksum: 10c0/5b6d3a33775b66a1272392d3630734bd0f3662f54b36f9c946fc495ee3d597cd3d36603e91ea69714f099b3c891e537cdaaaaf93ff07240630cc07a763265fc3 + languageName: node + linkType: hard + +"@scure/base@npm:^1.1.3, @scure/base@npm:~1.1.0, @scure/base@npm:~1.1.2, @scure/base@npm:~1.1.6, @scure/base@npm:~1.1.7, @scure/base@npm:~1.1.8": + version: 1.1.9 + resolution: "@scure/base@npm:1.1.9" + checksum: 10c0/77a06b9a2db8144d22d9bf198338893d77367c51b58c72b99df990c0a11f7cadd066d4102abb15e3ca6798d1529e3765f55c4355742465e49aed7a0c01fe76e8 + languageName: node + linkType: hard + +"@scure/bip32@npm:1.3.2": + version: 1.3.2 + resolution: "@scure/bip32@npm:1.3.2" + dependencies: + "@noble/curves": "npm:~1.2.0" + "@noble/hashes": "npm:~1.3.2" + "@scure/base": "npm:~1.1.2" + checksum: 10c0/2e9c1ce67f72b6c3329483f5fd39fb43ba6dcf732ed7ac63b80fa96341d2bc4cad1ea4c75bfeb91e801968c00df48b577b015fd4591f581e93f0d91178e630ca + languageName: node + linkType: hard + +"@scure/bip32@npm:1.4.0": + version: 1.4.0 + resolution: "@scure/bip32@npm:1.4.0" + dependencies: + "@noble/curves": "npm:~1.4.0" + "@noble/hashes": "npm:~1.4.0" + "@scure/base": "npm:~1.1.6" + checksum: 10c0/6849690d49a3bf1d0ffde9452eb16ab83478c1bc0da7b914f873e2930cd5acf972ee81320e3df1963eb247cf57e76d2d975b5f97093d37c0e3f7326581bf41bd + languageName: node + linkType: hard + +"@scure/bip32@npm:1.5.0": + version: 1.5.0 + resolution: "@scure/bip32@npm:1.5.0" + dependencies: + "@noble/curves": "npm:~1.6.0" + "@noble/hashes": "npm:~1.5.0" + "@scure/base": "npm:~1.1.7" + checksum: 10c0/3319beda59e7f129d770cbe49709a2d1742f2deb6989b12e37aa1a47cd128a8c943bdd9286c6a5513ef4539307c4bca8f89f9aa91f294cac4598cbf95fa0c01d + languageName: node + linkType: hard + +"@scure/bip39@npm:1.2.1": + version: 1.2.1 + resolution: "@scure/bip39@npm:1.2.1" + dependencies: + "@noble/hashes": "npm:~1.3.0" + "@scure/base": "npm:~1.1.0" + checksum: 10c0/fe951f69dd5a7cdcefbe865bce1b160d6b59ba19bd01d09f0718e54fce37a7d8be158b32f5455f0e9c426a7fbbede3e019bf0baa99bacc88ef26a76a07e115d4 + languageName: node + linkType: hard + +"@scure/bip39@npm:1.3.0": + version: 1.3.0 + resolution: "@scure/bip39@npm:1.3.0" + dependencies: + "@noble/hashes": "npm:~1.4.0" + "@scure/base": "npm:~1.1.6" + checksum: 10c0/1ae1545a7384a4d9e33e12d9e9f8824f29b0279eb175b0f0657c0a782c217920054f9a1d28eb316a417dfc6c4e0b700d6fbdc6da160670107426d52fcbe017a8 + languageName: node + linkType: hard + +"@scure/bip39@npm:1.4.0": + version: 1.4.0 + resolution: "@scure/bip39@npm:1.4.0" + dependencies: + "@noble/hashes": "npm:~1.5.0" + "@scure/base": "npm:~1.1.8" + checksum: 10c0/dcdceeac348ed9c0f545c1a7ef8854ef62d6eb4e7b7aaafa4e2ef27f7e1c5744b0cd26292afd04e1ee59ae035b19abdd65174a444b8db8c238ccc662f6b90eac + languageName: node + linkType: hard + +"@semantic-release/commit-analyzer@npm:9.0.2, @semantic-release/commit-analyzer@npm:^9.0.2": + version: 9.0.2 + resolution: "@semantic-release/commit-analyzer@npm:9.0.2" + dependencies: + conventional-changelog-angular: "npm:^5.0.0" + conventional-commits-filter: "npm:^2.0.0" + conventional-commits-parser: "npm:^3.2.3" + debug: "npm:^4.0.0" + import-from: "npm:^4.0.0" + lodash: "npm:^4.17.4" + micromatch: "npm:^4.0.2" + peerDependencies: + semantic-release: ">=18.0.0-beta.1" + checksum: 10c0/bcb50712d1b13e9439e08046817e3a3b22e015754df44c55cf88334d8c3922455cb50d0c9b06896bdc2282ab0e95d132d04a48583a835cecf7457a9d39776f01 + languageName: node + linkType: hard + +"@semantic-release/error@npm:^3.0.0": + version: 3.0.0 + resolution: "@semantic-release/error@npm:3.0.0" + checksum: 10c0/51f06d11186a6efc543b44996ca1c368a77c6ed18dd823f0362188c37b7ef32f3580bd17654f594e6a72b931ebe69b44bbcb1ee16c755a1d3e44dcb652b47275 + languageName: node + linkType: hard + +"@semantic-release/git@npm:10.0.1": + version: 10.0.1 + resolution: "@semantic-release/git@npm:10.0.1" + dependencies: + "@semantic-release/error": "npm:^3.0.0" + aggregate-error: "npm:^3.0.0" + debug: "npm:^4.0.0" + dir-glob: "npm:^3.0.0" + execa: "npm:^5.0.0" + lodash: "npm:^4.17.4" + micromatch: "npm:^4.0.0" + p-reduce: "npm:^2.0.0" + peerDependencies: + semantic-release: ">=18.0.0" + checksum: 10c0/90077068b97ff894e5f6bea05d0c7482929d3bae64c242a1556bc85db4d8f0a52b71215300472539b95248778cdf239a3f8cbad5effaaba719a32bf347dbdd93 + languageName: node + linkType: hard + +"@semantic-release/github@npm:^8.0.0": + version: 8.1.0 + resolution: "@semantic-release/github@npm:8.1.0" + dependencies: + "@octokit/core": "npm:^4.2.1" + "@octokit/plugin-paginate-rest": "npm:^6.1.2" + "@octokit/plugin-retry": "npm:^4.1.3" + "@octokit/plugin-throttling": "npm:^5.2.3" + "@semantic-release/error": "npm:^3.0.0" + aggregate-error: "npm:^3.0.0" + debug: "npm:^4.0.0" + dir-glob: "npm:^3.0.0" + fs-extra: "npm:^11.0.0" + globby: "npm:^11.0.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.0" + issue-parser: "npm:^6.0.0" + lodash: "npm:^4.17.4" + mime: "npm:^3.0.0" + p-filter: "npm:^2.0.0" + url-join: "npm:^4.0.0" + peerDependencies: + semantic-release: ">=18.0.0-beta.1" + checksum: 10c0/2a1bb1e7eb04c7a7dfcb6bd95c36371c71a80c158515f4e2ef946e31a4c698818150c1ac6cdaf63704fe6c91586ad5b5b28e7dc58ababe8c255418e0cea1c492 + languageName: node + linkType: hard + +"@semantic-release/npm@npm:9.0.0": + version: 9.0.0 + resolution: "@semantic-release/npm@npm:9.0.0" + dependencies: + "@semantic-release/error": "npm:^3.0.0" + aggregate-error: "npm:^3.0.0" + execa: "npm:^5.0.0" + fs-extra: "npm:^10.0.0" + lodash: "npm:^4.17.15" + nerf-dart: "npm:^1.0.0" + normalize-url: "npm:^6.0.0" + npm: "npm:^8.3.0" + rc: "npm:^1.2.8" + read-pkg: "npm:^5.0.0" + registry-auth-token: "npm:^4.0.0" + semver: "npm:^7.1.2" + tempy: "npm:^1.0.0" + peerDependencies: + semantic-release: ">=19.0.0" + checksum: 10c0/5330d7420fdfdde793ed778c090a07fc85e8eea3b8c9d26180497181dec7f673f10fb47e97a14b844c9700cfd666bc1ba2bedfea8351eced9a4a9f6f5f537d7c + languageName: node + linkType: hard + +"@semantic-release/npm@npm:^9.0.0": + version: 9.0.2 + resolution: "@semantic-release/npm@npm:9.0.2" + dependencies: + "@semantic-release/error": "npm:^3.0.0" + aggregate-error: "npm:^3.0.0" + execa: "npm:^5.0.0" + fs-extra: "npm:^11.0.0" + lodash: "npm:^4.17.15" + nerf-dart: "npm:^1.0.0" + normalize-url: "npm:^6.0.0" + npm: "npm:^8.3.0" + rc: "npm:^1.2.8" + read-pkg: "npm:^5.0.0" + registry-auth-token: "npm:^5.0.0" + semver: "npm:^7.1.2" + tempy: "npm:^1.0.0" + peerDependencies: + semantic-release: ">=19.0.0" + checksum: 10c0/4efa3b2b859d461b499f7800429e1a7986bd45f0a2a47cd1ce0b51f6e575984b25583444ffd7aa993a3cbc625b85df482917c94d1513b5e3a882cfdda56c6eef + languageName: node + linkType: hard + +"@semantic-release/release-notes-generator@npm:^10.0.0": + version: 10.0.3 + resolution: "@semantic-release/release-notes-generator@npm:10.0.3" + dependencies: + conventional-changelog-angular: "npm:^5.0.0" + conventional-changelog-writer: "npm:^5.0.0" + conventional-commits-filter: "npm:^2.0.0" + conventional-commits-parser: "npm:^3.2.3" + debug: "npm:^4.0.0" + get-stream: "npm:^6.0.0" + import-from: "npm:^4.0.0" + into-stream: "npm:^6.0.0" + lodash: "npm:^4.17.4" + read-pkg-up: "npm:^7.0.0" + peerDependencies: + semantic-release: ">=18.0.0-beta.1" + checksum: 10c0/bf1a5244d7df353afbb68cf0e5f1d40bd4e6472bd75bd0b0c7547a179bce14b6a9ef5529e5fdec5c15566e798acc91991e14914a3083bad828d17bd8d0c0e45b + languageName: node + linkType: hard + +"@sigstore/bundle@npm:^1.1.0": + version: 1.1.0 + resolution: "@sigstore/bundle@npm:1.1.0" + dependencies: + "@sigstore/protobuf-specs": "npm:^0.2.0" + checksum: 10c0/f29af2c59eefceb2c6fb88e6acb31efd7400a46968324ad60c19f054bcac3c16f6e2dfa5162feaeb57e3b1688dcd0b659a9d00ca27bbe7907d472758da15586c + languageName: node + linkType: hard + +"@sigstore/protobuf-specs@npm:^0.2.0": + version: 0.2.1 + resolution: "@sigstore/protobuf-specs@npm:0.2.1" + checksum: 10c0/756b3bc64e7f21d966473208cd3920fcde6744025f7deb1d3be1d2b6261b825178b393db7458cd191b2eab947e516eacd6f91aa2f4545d8c045431fb699ac357 + languageName: node + linkType: hard + +"@sigstore/sign@npm:^1.0.0": + version: 1.0.0 + resolution: "@sigstore/sign@npm:1.0.0" + dependencies: + "@sigstore/bundle": "npm:^1.1.0" + "@sigstore/protobuf-specs": "npm:^0.2.0" + make-fetch-happen: "npm:^11.0.1" + checksum: 10c0/579b4ba31acd662fc9053e6c1e49fda320fa7faf95233d9f7daa87cf198f6f785658fed2791d18d340176f55da300c178c00fcb4871a7d8582df446a09ac6287 + languageName: node + linkType: hard + +"@sigstore/tuf@npm:^1.0.3": + version: 1.0.3 + resolution: "@sigstore/tuf@npm:1.0.3" + dependencies: + "@sigstore/protobuf-specs": "npm:^0.2.0" + tuf-js: "npm:^1.1.7" + checksum: 10c0/28abf11f05e12dab0e5d53f09743921e7129519753b3ab79e6cfc2400c80a06bc4f233c430dcd4236f8ca6db1aaf20fdd93999592cef0ea4c08f9731c63d09d4 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10c0/2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 + languageName: node + linkType: hard + +"@socket.io/component-emitter@npm:~3.1.0": + version: 3.1.2 + resolution: "@socket.io/component-emitter@npm:3.1.2" + checksum: 10c0/c4242bad66f67e6f7b712733d25b43cbb9e19a595c8701c3ad99cbeb5901555f78b095e24852f862fffb43e96f1d8552e62def885ca82ae1bb05da3668fd87d7 + languageName: node + linkType: hard + +"@stablelib/aead@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/aead@npm:1.0.1" + checksum: 10c0/8ec16795a6f94264f93514661e024c5b0434d75000ea133923c57f0db30eab8ddc74fa35f5ff1ae4886803a8b92e169b828512c9e6bc02c818688d0f5b9f5aef + languageName: node + linkType: hard + +"@stablelib/binary@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/binary@npm:1.0.1" + dependencies: + "@stablelib/int": "npm:^1.0.1" + checksum: 10c0/154cb558d8b7c20ca5dc2e38abca2a3716ce36429bf1b9c298939cea0929766ed954feb8a9c59245ac64c923d5d3466bb7d99f281debd3a9d561e1279b11cd35 + languageName: node + linkType: hard + +"@stablelib/bytes@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/bytes@npm:1.0.1" + checksum: 10c0/ee99bb15dac2f4ae1aa4e7a571e76483617a441feff422442f293993bc8b2c7ef021285c98f91a043bc05fb70502457799e28ffd43a8564a17913ee5ce889237 + languageName: node + linkType: hard + +"@stablelib/chacha20poly1305@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha20poly1305@npm:1.0.1" + dependencies: + "@stablelib/aead": "npm:^1.0.1" + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/chacha": "npm:^1.0.1" + "@stablelib/constant-time": "npm:^1.0.1" + "@stablelib/poly1305": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/fe202aa8aface111c72bc9ec099f9c36a7b1470eda9834e436bb228618a704929f095b937f04e867fe4d5c40216ff089cbfeb2eeb092ab33af39ff333eb2c1e6 + languageName: node + linkType: hard + +"@stablelib/chacha@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha@npm:1.0.1" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/4d70b484ae89416d21504024f977f5517bf16b344b10fb98382c9e3e52fe8ca77ac65f5d6a358d8b152f2c9ffed101a1eb15ed1707cdf906e1b6624db78d2d16 + languageName: node + linkType: hard + +"@stablelib/constant-time@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/constant-time@npm:1.0.1" + checksum: 10c0/694a282441215735a1fdfa3d06db5a28ba92423890967a154514ef28e0d0298ce7b6a2bc65ebc4273573d6669a6b601d330614747aa2e69078c1d523d7069e12 + languageName: node + linkType: hard + +"@stablelib/ed25519@npm:^1.0.2": + version: 1.0.3 + resolution: "@stablelib/ed25519@npm:1.0.3" + dependencies: + "@stablelib/random": "npm:^1.0.2" + "@stablelib/sha512": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/b4a05e3c24dabd8a9e0b5bd72dea761bfb4b5c66404308e9f0529ef898e75d6f588234920762d5372cb920d9d47811250160109f02d04b6eed53835fb6916eb9 + languageName: node + linkType: hard + +"@stablelib/hash@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hash@npm:1.0.1" + checksum: 10c0/58b5572a4067820b77a1606ed2d4a6dc4068c5475f68ba0918860a5f45adf60b33024a0cea9532dcd8b7345c53b3c9636a23723f5f8ae83e0c3648f91fb5b5cc + languageName: node + linkType: hard + +"@stablelib/hkdf@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/hkdf@npm:1.0.1" + dependencies: + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/hmac": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/722d30e36afa8029fda2a9e8c65ad753deff92a234e708820f9fd39309d2494e1c035a4185f29ae8d7fbf8a74862b27128c66a1fb4bd7a792bd300190080dbe9 + languageName: node + linkType: hard + +"@stablelib/hmac@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hmac@npm:1.0.1" + dependencies: + "@stablelib/constant-time": "npm:^1.0.1" + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/a111d5e687966b62c81f7dbd390f13582b027edee9bd39df6474a6472e5ad89d705e735af32bae2c9280a205806649f54b5ff8c4e8c8a7b484083a35b257e9e6 + languageName: node + linkType: hard + +"@stablelib/int@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/int@npm:1.0.1" + checksum: 10c0/e1a6a7792fc2146d65de56e4ef42e8bc385dd5157eff27019b84476f564a1a6c43413235ed0e9f7c9bb8907dbdab24679467aeb10f44c92e6b944bcd864a7ee0 + languageName: node + linkType: hard + +"@stablelib/keyagreement@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/keyagreement@npm:1.0.1" + dependencies: + "@stablelib/bytes": "npm:^1.0.1" + checksum: 10c0/18c9e09772a058edee265c65992ec37abe4ab5118171958972e28f3bbac7f2a0afa6aaf152ec1d785452477bdab5366b3f5b750e8982ae9ad090f5fa2e5269ba + languageName: node + linkType: hard + +"@stablelib/poly1305@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/poly1305@npm:1.0.1" + dependencies: + "@stablelib/constant-time": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/080185ffa92f5111e6ecfeab7919368b9984c26d048b9c09a111fbc657ea62bb5dfe6b56245e1804ce692a445cc93ab6625936515fa0e7518b8f2d86feda9630 + languageName: node + linkType: hard + +"@stablelib/random@npm:1.0.2, @stablelib/random@npm:^1.0.1, @stablelib/random@npm:^1.0.2": + version: 1.0.2 + resolution: "@stablelib/random@npm:1.0.2" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/ebb217cfb76db97d98ec07bd7ce03a650fa194b91f0cb12382738161adff1830f405de0e9bad22bbc352422339ff85f531873b6a874c26ea9b59cfcc7ea787e0 + languageName: node + linkType: hard + +"@stablelib/sha256@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha256@npm:1.0.1" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/e29ee9bc76eece4345e9155ce4bdeeb1df8652296be72bd2760523ad565e3b99dca85b81db3b75ee20b34837077eb8542ca88f153f162154c62ba1f75aecc24a + languageName: node + linkType: hard + +"@stablelib/sha512@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha512@npm:1.0.1" + dependencies: + "@stablelib/binary": "npm:^1.0.1" + "@stablelib/hash": "npm:^1.0.1" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/84549070a383f4daf23d9065230eb81bc8f590c68bf5f7968f1b78901236b3bb387c14f63773dc6c3dc78e823b1c15470d2a04d398a2506391f466c16ba29b58 + languageName: node + linkType: hard + +"@stablelib/wipe@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/wipe@npm:1.0.1" + checksum: 10c0/c5a54f769c286a5b3ecff979471dfccd4311f2e84a959908e8c0e3aa4eed1364bd9707f7b69d1384b757e62cc295c221fa27286c7f782410eb8a690f30cfd796 + languageName: node + linkType: hard + +"@stablelib/x25519@npm:1.0.3, @stablelib/x25519@npm:^1.0.3": + version: 1.0.3 + resolution: "@stablelib/x25519@npm:1.0.3" + dependencies: + "@stablelib/keyagreement": "npm:^1.0.1" + "@stablelib/random": "npm:^1.0.2" + "@stablelib/wipe": "npm:^1.0.1" + checksum: 10c0/d8afe8a120923a434359d7d1c6759780426fed117a84a6c0f84d1a4878834cb4c2d7da78a1fa7cf227ce3924fdc300cd6ed6e46cf2508bf17b1545c319ab8418 + languageName: node + linkType: hard + +"@svgr/babel-plugin-add-jsx-attribute@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a13ed0797189d5497890530449029bec388310e260a96459e304e2729e7a2cf4d20d34f882d9a77ccce73dd3d36065afbb6987258fdff618d7d57955065a8ad4 + languageName: node + linkType: hard + +"@svgr/babel-plugin-remove-jsx-attribute@npm:*": + version: 8.0.0 + resolution: "@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8a98e59bd9971e066815b4129409932f7a4db4866834fe75677ea6d517972fb40b380a69a4413189f20e7947411f9ab1b0f029dd5e8068686a5a0188d3ccd4c7 + languageName: node + linkType: hard + +"@svgr/babel-plugin-remove-jsx-empty-expression@npm:*": + version: 8.0.0 + resolution: "@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/517dcca75223bd05d3f056a8514dbba3031278bea4eadf0842c576d84f4651e7a4e0e7082d3ee4ef42456de0f9c4531d8a1917c04876ca64b014b859ca8f1bde + languageName: node + linkType: hard + +"@svgr/babel-plugin-replace-jsx-attribute-value@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/318786787c9a217c33a7340c8856436858e1fffa5a6df635fedc6b9a371f3afea080ea074b9e3cfbbd9dd962ead924fde8bc9855a394c38dd60e391883a58c81 + languageName: node + linkType: hard + +"@svgr/babel-plugin-svg-dynamic-title@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/16ef228c793b909fec47dd7dc05c1c3c2d77a824f42055df37e141e0534081b1bc4aec6dcc51be50c221df9f262f59270fc1c379923bfd4f5db302abafabfd8d + languageName: node + linkType: hard + +"@svgr/babel-plugin-svg-em-dimensions@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/dfdd5cbe6ae543505eaa0da69df0735b7407294c4b0504b3e74c0e7e371f1acb914eb99fd21ff39ef5bd626b3474f064a4cccc50f41b7c556ee834f9a6d6610a + languageName: node + linkType: hard + +"@svgr/babel-plugin-transform-react-native-svg@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/332fbf3bbc19d938b744440dbab9c8acd8f7a2ed6bf9c4e23f40e3f2c25615a60b3bf00902a4f1f6c20b5f382a1547b3acc6f2b2d70d80e532b5d45945f1b979 + languageName: node + linkType: hard + +"@svgr/babel-plugin-transform-svg-component@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-transform-svg-component@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8d9e1c7c62abce23837e53cdacc6d09bc1f1f2b0ad7322105001c097995e9aa8dca4fa41acf39148af69f342e40081c438106949fb083e997ca497cb0448f27d + languageName: node + linkType: hard + +"@svgr/babel-preset@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-preset@npm:6.5.1" + dependencies: + "@svgr/babel-plugin-add-jsx-attribute": "npm:^6.5.1" + "@svgr/babel-plugin-remove-jsx-attribute": "npm:*" + "@svgr/babel-plugin-remove-jsx-empty-expression": "npm:*" + "@svgr/babel-plugin-replace-jsx-attribute-value": "npm:^6.5.1" + "@svgr/babel-plugin-svg-dynamic-title": "npm:^6.5.1" + "@svgr/babel-plugin-svg-em-dimensions": "npm:^6.5.1" + "@svgr/babel-plugin-transform-react-native-svg": "npm:^6.5.1" + "@svgr/babel-plugin-transform-svg-component": "npm:^6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8e8d7a0049279152f9ac308fbfd4ce74063d8a376154718cba6309bae4316318804a32201c75c5839c629f8e1e5d641a87822764000998161d0fc1de24b0374a + languageName: node + linkType: hard + +"@svgr/core@npm:^6.1.2": + version: 6.5.1 + resolution: "@svgr/core@npm:6.5.1" + dependencies: + "@babel/core": "npm:^7.19.6" + "@svgr/babel-preset": "npm:^6.5.1" + "@svgr/plugin-jsx": "npm:^6.5.1" + camelcase: "npm:^6.2.0" + cosmiconfig: "npm:^7.0.1" + checksum: 10c0/60cce11e13391171132115dcc8da592d23e51f155ebadf9b819bd1836b8c13d40aa5c30a03a7d429f65e70a71c50669b2e10c94e4922de4e58bc898275f46c05 + languageName: node + linkType: hard + +"@svgr/hast-util-to-babel-ast@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/hast-util-to-babel-ast@npm:6.5.1" + dependencies: + "@babel/types": "npm:^7.20.0" + entities: "npm:^4.4.0" + checksum: 10c0/18fa37b36581ba1678f5cc5a05ce0411e08df4db267f3cd900af7ffdf5bd90522f3a46465f315cd5d7345264949479133930aafdd27ce05c474e63756196256f + languageName: node + linkType: hard + +"@svgr/plugin-jsx@npm:^6.1.2, @svgr/plugin-jsx@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/plugin-jsx@npm:6.5.1" + dependencies: + "@babel/core": "npm:^7.19.6" + "@svgr/babel-preset": "npm:^6.5.1" + "@svgr/hast-util-to-babel-ast": "npm:^6.5.1" + svg-parser: "npm:^2.0.4" + peerDependencies: + "@svgr/core": ^6.0.0 + checksum: 10c0/365da6e43ceeff6b49258fa2fbb3c880210300e4a85ba74831e92d2dc9c53e6ab8dda422dc33fb6a339803227cf8d9a0024ce769401c46fd87209abe36d5ae43 + languageName: node + linkType: hard + +"@svgr/plugin-svgo@npm:^6.1.2": + version: 6.5.1 + resolution: "@svgr/plugin-svgo@npm:6.5.1" + dependencies: + cosmiconfig: "npm:^7.0.1" + deepmerge: "npm:^4.2.2" + svgo: "npm:^2.8.0" + peerDependencies: + "@svgr/core": "*" + checksum: 10c0/da40e461145af1a92fd2ec50ea64626681fa73786f218497a4b4fb85393a58812999ca2744ee33bb7ab771aa5ce9ab1dbd08a189cb3d7a89fb58fd96913ddf91 + languageName: node + linkType: hard + +"@svgr/webpack@npm:6.1.2": + version: 6.1.2 + resolution: "@svgr/webpack@npm:6.1.2" + dependencies: + "@babel/core": "npm:^7.15.5" + "@babel/plugin-transform-react-constant-elements": "npm:^7.14.5" + "@babel/preset-env": "npm:^7.15.6" + "@babel/preset-react": "npm:^7.14.5" + "@babel/preset-typescript": "npm:^7.15.0" + "@svgr/core": "npm:^6.1.2" + "@svgr/plugin-jsx": "npm:^6.1.2" + "@svgr/plugin-svgo": "npm:^6.1.2" + checksum: 10c0/670f32e5115ae3f05a651358d61e7018fdce6df7439583791eec04c2441fb77a80b96e94b9ccef23babfd8b6d37998e773f133064ff1192331f8578ec03a5fef + languageName: node + linkType: hard + +"@swc/core-darwin-arm64@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-darwin-arm64@npm:1.7.28" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-darwin-x64@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-darwin-x64@npm:1.7.28" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@swc/core-linux-arm-gnueabihf@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.28" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@swc/core-linux-arm64-gnu@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-arm64-gnu@npm:1.7.28" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-arm64-musl@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-arm64-musl@npm:1.7.28" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-linux-x64-gnu@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-x64-gnu@npm:1.7.28" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-x64-musl@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-x64-musl@npm:1.7.28" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-win32-arm64-msvc@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-win32-arm64-msvc@npm:1.7.28" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-win32-ia32-msvc@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-win32-ia32-msvc@npm:1.7.28" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@swc/core-win32-x64-msvc@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-win32-x64-msvc@npm:1.7.28" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@swc/core@npm:^1.3.36": + version: 1.7.28 + resolution: "@swc/core@npm:1.7.28" + dependencies: + "@swc/core-darwin-arm64": "npm:1.7.28" + "@swc/core-darwin-x64": "npm:1.7.28" + "@swc/core-linux-arm-gnueabihf": "npm:1.7.28" + "@swc/core-linux-arm64-gnu": "npm:1.7.28" + "@swc/core-linux-arm64-musl": "npm:1.7.28" + "@swc/core-linux-x64-gnu": "npm:1.7.28" + "@swc/core-linux-x64-musl": "npm:1.7.28" + "@swc/core-win32-arm64-msvc": "npm:1.7.28" + "@swc/core-win32-ia32-msvc": "npm:1.7.28" + "@swc/core-win32-x64-msvc": "npm:1.7.28" + "@swc/counter": "npm:^0.1.3" + "@swc/types": "npm:^0.1.12" + peerDependencies: + "@swc/helpers": "*" + dependenciesMeta: + "@swc/core-darwin-arm64": + optional: true + "@swc/core-darwin-x64": + optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true + "@swc/core-linux-arm64-gnu": + optional: true + "@swc/core-linux-arm64-musl": + optional: true + "@swc/core-linux-x64-gnu": + optional: true + "@swc/core-linux-x64-musl": + optional: true + "@swc/core-win32-arm64-msvc": + optional: true + "@swc/core-win32-ia32-msvc": + optional: true + "@swc/core-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: 10c0/e7a5764fe9c476b606b3c68e9bfcb1945a2a1576458176dbd93edd06bd57e3e0837a119c21162904fa2b0c3f5c3a7049d77b52c4f793e0d4f4f345ba959c5456 + languageName: node + linkType: hard + +"@swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: 10c0/8424f60f6bf8694cfd2a9bca45845bce29f26105cda8cf19cdb9fd3e78dc6338699e4db77a89ae449260bafa1cc6bec307e81e7fb96dbf7dcfce0eea55151356 + languageName: node + linkType: hard + +"@swc/helpers@npm:0.4.14": + version: 0.4.14 + resolution: "@swc/helpers@npm:0.4.14" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/a8bd2e291fca73aa35ff316fb1aa9fb9554856518c8bf64ab5a355fb587d79d04d67f95033012fcdc94f507d22484871d95dc72efdd9ff13cc5d0ac68dfba999 + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.5.0": + version: 0.5.13 + resolution: "@swc/helpers@npm:0.5.13" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/b9df578401fc62405da9a6c31e79e447a2fd90f68b25b1daee12f2caf2821991bb89106f0397bc1acb4c4d84a8ce079d04b60b65f534496952e3bf8c9a52f40f + languageName: node + linkType: hard + +"@swc/types@npm:^0.1.12": + version: 0.1.13 + resolution: "@swc/types@npm:0.1.13" + dependencies: + "@swc/counter": "npm:^0.1.3" + checksum: 10c0/f85a850dead981ca9a26ae366529f2b383fa26324ffcbbee46d7b48399e6ed36d6a6a3d55398f17f87c65f550e28d642a35877d40f389c78765a31ecdfc88bd9 + languageName: node + linkType: hard + +"@tanstack/query-core@npm:5.24.8": + version: 5.24.8 + resolution: "@tanstack/query-core@npm:5.24.8" + checksum: 10c0/3c3d51f1c6e049ac9f6f7c36cefc640b3266d9a91307cbfc02e4ce6b4e1cf68de1b8f0243fca20c86d8cf616e334579dc123424aed9daedc32a92e5c9e97ca64 + languageName: node + linkType: hard + +"@tanstack/react-query@npm:5.24.8": + version: 5.24.8 + resolution: "@tanstack/react-query@npm:5.24.8" + dependencies: + "@tanstack/query-core": "npm:5.24.8" + peerDependencies: + react: ^18.0.0 + checksum: 10c0/f2d7d3ba93e5cd7ff5d21e91e2670bdcfd864741c13e7cca93c996f8b61738cb16796e3702d0aa5b9ba36c5c15ffdc068466662c0de40baf9c45c053559b3fdd + languageName: node + linkType: hard + +"@testing-library/dom@npm:^8.5.0": + version: 8.20.1 + resolution: "@testing-library/dom@npm:8.20.1" + dependencies: + "@babel/code-frame": "npm:^7.10.4" + "@babel/runtime": "npm:^7.12.5" + "@types/aria-query": "npm:^5.0.1" + aria-query: "npm:5.1.3" + chalk: "npm:^4.1.0" + dom-accessibility-api: "npm:^0.5.9" + lz-string: "npm:^1.5.0" + pretty-format: "npm:^27.0.2" + checksum: 10c0/614013756706467f2a7f3f693c18377048c210ec809884f0f9be866f7d865d075805ad15f5d100e8a699467fdde09085bf79e23a00ea0a6ab001d9583ef15e5d + languageName: node + linkType: hard + +"@testing-library/jest-dom@npm:5.16.1": + version: 5.16.1 + resolution: "@testing-library/jest-dom@npm:5.16.1" + dependencies: + "@babel/runtime": "npm:^7.9.2" + "@types/testing-library__jest-dom": "npm:^5.9.1" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.5.6" + lodash: "npm:^4.17.15" + redent: "npm:^3.0.0" + checksum: 10c0/a510110bb3f37597a315bd2625162c1833432e8e86f15187294137059da443bb6cdf9bff320490ff482319da845f09ef8a5395040d1d1308c240fc6edd588b27 + languageName: node + linkType: hard + +"@testing-library/react-hooks@npm:7.0.2": + version: 7.0.2 + resolution: "@testing-library/react-hooks@npm:7.0.2" + dependencies: + "@babel/runtime": "npm:^7.12.5" + "@types/react": "npm:>=16.9.0" + "@types/react-dom": "npm:>=16.9.0" + "@types/react-test-renderer": "npm:>=16.9.0" + react-error-boundary: "npm:^3.1.0" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + react-test-renderer: ">=16.9.0" + peerDependenciesMeta: + react-dom: + optional: true + react-test-renderer: + optional: true + checksum: 10c0/249fa57551a1ce63fdfbc7944eeaa2ca4eaae160b6f64b631ceeb150b2d82c1478190471961d04b640e87c6d5417f2e7649600b69068485cd2a20de664716859 + languageName: node + linkType: hard + +"@testing-library/react@npm:13.4.0": + version: 13.4.0 + resolution: "@testing-library/react@npm:13.4.0" + dependencies: + "@babel/runtime": "npm:^7.12.5" + "@testing-library/dom": "npm:^8.5.0" + "@types/react-dom": "npm:^18.0.0" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 10c0/371bf982dd0deb27da004f368b06904353eac0f23f9c08ff0f24443c3f51a6d647009e366034417565d2484c40f1c7eff74413738abf4ec55209da9bd3253b0e + languageName: node + linkType: hard + +"@tootallnate/once@npm:1": + version: 1.1.2 + resolution: "@tootallnate/once@npm:1.1.2" + checksum: 10c0/8fe4d006e90422883a4fa9339dd05a83ff626806262e1710cee5758d493e8cbddf2db81c0e4690636dc840b02c9fda62877866ea774ebd07c1777ed5fafbdec6 + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 + languageName: node + linkType: hard + +"@trysound/sax@npm:0.2.0": + version: 0.2.0 + resolution: "@trysound/sax@npm:0.2.0" + checksum: 10c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 + languageName: node + linkType: hard + +"@ts-morph/common@npm:~0.12.3": + version: 0.12.3 + resolution: "@ts-morph/common@npm:0.12.3" + dependencies: + fast-glob: "npm:^3.2.7" + minimatch: "npm:^3.0.4" + mkdirp: "npm:^1.0.4" + path-browserify: "npm:^1.0.1" + checksum: 10c0/2a0b25128eca547cfdf4795d39e7d6e15c81008b74867ccdda9d0d9c1b0eaca534d6d729220572e726a811786efa3c38f3b6a482d3fc970d3bf0acea39a7248f + languageName: node + linkType: hard + +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node10@npm:1.0.11" + checksum: 10c0/28a0710e5d039e0de484bdf85fee883bfd3f6a8980601f4d44066b0a6bcd821d31c4e231d1117731c4e24268bd4cf2a788a6787c12fc7f8d11014c07d582783c + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb + languageName: node + linkType: hard + +"@tufjs/canonical-json@npm:1.0.0": + version: 1.0.0 + resolution: "@tufjs/canonical-json@npm:1.0.0" + checksum: 10c0/6d28fdfa1fe22cc6a3ff41de8bf74c46dee6d4ff00e8a33519d84e060adaaa04bbdaf17fbcd102511fbdd5e4b8d2a67341c9aaf0cd641be1aea386442f4b1e88 + languageName: node + linkType: hard + +"@tufjs/models@npm:1.0.4": + version: 1.0.4 + resolution: "@tufjs/models@npm:1.0.4" + dependencies: + "@tufjs/canonical-json": "npm:1.0.0" + minimatch: "npm:^9.0.0" + checksum: 10c0/99bcfa6ecd642861a21e4874c4a687bb57f7c2ab7e10c6756b576c2fa4a6f2be3d21ba8e76334f11ea2846949b514b10fa59584aaee0a100e09e9263114b635b + languageName: node + linkType: hard + +"@types/aria-query@npm:^5.0.1": + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: 10c0/dc667bc6a3acc7bba2bccf8c23d56cb1f2f4defaa704cfef595437107efaa972d3b3db9ec1d66bc2711bfc35086821edd32c302bffab36f2e79b97f312069f08 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.1.14": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/7ba7db61a53e28cac955aa99af280d2600f15a8c056619c05b6fc911cbe02c61aa4f2823299221b23ce0cce00b294c0e5f618ec772aa3f247523c2e48cf7b888 + languageName: node + linkType: hard + +"@types/big.js@npm:6.2.2": + version: 6.2.2 + resolution: "@types/big.js@npm:6.2.2" + checksum: 10c0/8f8472dfc1ef61c492e6841e86f8b9b97e5b024136bf7964e582a6a80ba73d4dbfd6cc23ed3b9d8fea69c7f30834fffd1c88e7fb981811f5c6ca608380b5ad67 + languageName: node + linkType: hard + +"@types/body-parser@npm:*": + version: 1.19.5 + resolution: "@types/body-parser@npm:1.19.5" + dependencies: + "@types/connect": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/aebeb200f25e8818d8cf39cd0209026750d77c9b85381cdd8deeb50913e4d18a1ebe4b74ca9b0b4d21952511eeaba5e9fbbf739b52731a2061e206ec60d568df + languageName: node + linkType: hard + +"@types/bonjour@npm:^3.5.9": + version: 3.5.13 + resolution: "@types/bonjour@npm:3.5.13" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/eebedbca185ac3c39dd5992ef18d9e2a9f99e7f3c2f52f5561f90e9ed482c5d224c7962db95362712f580ed5713264e777a98d8f0bd8747f4eadf62937baed16 + languageName: node + linkType: hard + +"@types/connect-history-api-fallback@npm:^1.3.5": + version: 1.5.4 + resolution: "@types/connect-history-api-fallback@npm:1.5.4" + dependencies: + "@types/express-serve-static-core": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/1b4035b627dcd714b05a22557f942e24a57ca48e7377dde0d2f86313fe685bc0a6566512a73257a55b5665b96c3041fb29228ac93331d8133011716215de8244 + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + languageName: node + linkType: hard + +"@types/debug@npm:^4.1.7": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "npm:*" + checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f + languageName: node + linkType: hard + +"@types/dns-packet@npm:^5.6.5": + version: 5.6.5 + resolution: "@types/dns-packet@npm:5.6.5" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/70fa9cb77a614f65288a48749d28cc9f40ce6c60980e2b75b25eac0b4e1e4109d14edf5151fa5e7b10aae1ec6b1094a2f171b9941191ff4c9a7afe23116b9edc + languageName: node + linkType: hard + +"@types/dom-screen-wake-lock@npm:^1.0.0": + version: 1.0.3 + resolution: "@types/dom-screen-wake-lock@npm:1.0.3" + checksum: 10c0/bab45f6a797de562f1bd3c095c49b7c0464ad05e571f38d00adaa35da2b02109bfe587206cc55f420377634cf0f7b07caa5acb3257e49dfd2d94dab74c617bf1 + languageName: node + linkType: hard + +"@types/eslint-scope@npm:^3.7.3": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10c0/a0ecbdf2f03912679440550817ff77ef39a30fa8bfdacaf6372b88b1f931828aec392f52283240f0d648cf3055c5ddc564544a626bcf245f3d09fcb099ebe3cc + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10c0/69ba24fee600d1e4c5abe0df086c1a4d798abf13792d8cfab912d76817fe1a894359a1518557d21237fbaf6eda93c5ab9309143dee4c59ef54336d1b3570420e + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a + languageName: node + linkType: hard + +"@types/estree@npm:0.0.39": + version: 0.0.39 + resolution: "@types/estree@npm:0.0.39" + checksum: 10c0/f0af6c95ac1988c4827964bd9d3b51d24da442e2188943f6dfcb1e1559103d5d024d564b2e9d3f84c53714a02a0a7435c7441138eb63d9af5de4dfc66cdc0d92 + languageName: node + linkType: hard + +"@types/estree@npm:^0.0.51": + version: 0.0.51 + resolution: "@types/estree@npm:0.0.51" + checksum: 10c0/a70c60d5e634e752fcd45b58c9c046ef22ad59ede4bc93ad5193c7e3b736ebd6bcd788ade59d9c3b7da6eeb0939235f011d4c59bb4fc04d8c346b76035099dd1 + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": + version: 5.0.0 + resolution: "@types/express-serve-static-core@npm:5.0.0" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/671a67a5b367e19aa634dcd515364212490f10efb938fc1097082085a883ccb11c81ec96a3c2b5cc67d5756e5cb1ccbf1de192806f8193bb7de341994beb4ea6 + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:^4.17.33": + version: 4.19.6 + resolution: "@types/express-serve-static-core@npm:4.19.6" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/4281f4ead71723f376b3ddf64868ae26244d434d9906c101cf8d436d4b5c779d01bd046e4ea0ed1a394d3e402216fabfa22b1fa4dba501061cd7c81c54045983 + languageName: node + linkType: hard + +"@types/express@npm:*": + version: 5.0.0 + resolution: "@types/express@npm:5.0.0" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^5.0.0" + "@types/qs": "npm:*" + "@types/serve-static": "npm:*" + checksum: 10c0/0d74b53aefa69c3b3817ee9b5145fd50d7dbac52a8986afc2d7500085c446656d0b6dc13158c04e2d9f18f4324d4d93b0452337c5ff73dd086dca3e4ff11f47b + languageName: node + linkType: hard + +"@types/express@npm:^4.17.13": + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^4.17.33" + "@types/qs": "npm:*" + "@types/serve-static": "npm:*" + checksum: 10c0/12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf + languageName: node + linkType: hard + +"@types/fs-extra@npm:^8.0.1": + version: 8.1.5 + resolution: "@types/fs-extra@npm:8.1.5" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/c9f7965bc499a6cc1cadb37a4e9002c0f33810867a0a47a132c4165cbe3b49c6ea52e26c3c38f07720540dd5c470619254c0ef00a2e14a8bf4971ec5d478ba69 + languageName: node + linkType: hard + +"@types/gh-pages@npm:6.1.0": + version: 6.1.0 + resolution: "@types/gh-pages@npm:6.1.0" + checksum: 10c0/d8bf644822df211accac9cff24fcc0a5155fd715d05bc1698175623f5cde1aff81c302e7e38f7105e0fa0fe7ab24d7009d8dbb875897af669f48e06c3c20484c + languageName: node + linkType: hard + +"@types/glob@npm:^7.1.1": + version: 7.2.0 + resolution: "@types/glob@npm:7.2.0" + dependencies: + "@types/minimatch": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/a8eb5d5cb5c48fc58c7ca3ff1e1ddf771ee07ca5043da6e4871e6757b4472e2e73b4cfef2644c38983174a4bc728c73f8da02845c28a1212f98cabd293ecae98 + languageName: node + linkType: hard + +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/235d2fc69741448e853333b7c3d1180a966dd2b8972c8cbcd6b2a0c6cd7f8d582ab2b8e58219dbc62cce8f1b40aa317ff78ea2201cdd8249da5025adebed6f0b + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.4 + resolution: "@types/http-errors@npm:2.0.4" + checksum: 10c0/494670a57ad4062fee6c575047ad5782506dd35a6b9ed3894cea65830a94367bd84ba302eb3dde331871f6d70ca287bfedb1b2cf658e6132cd2cbd427ab56836 + languageName: node + linkType: hard + +"@types/http-proxy@npm:^1.17.8": + version: 1.17.15 + resolution: "@types/http-proxy@npm:1.17.15" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/e2bf2fcdf23c88141b8d2c85ed5e5418b62ef78285884a2b5a717af55f4d9062136aa475489d10292093343df58fb81975f34bebd6b9df322288fd9821cbee07 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest@npm:*": + version: 29.5.13 + resolution: "@types/jest@npm:29.5.13" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10c0/9c31af0b155387b9860908830de63c6b79011d7c87c8b61b39da124e26e55423dd51b006749aafe4f0ef3a065016619a1f93ef4b055157d43727f448e67824b7 + languageName: node + linkType: hard + +"@types/jest@npm:29.4.4": + version: 29.4.4 + resolution: "@types/jest@npm:29.4.4" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10c0/cb26a82015360ad51951c38a945a97b89d895626e9d83ae4ae6ac9af1a5ab55428f1f13faf2c06b1026e5f171a892c8e3e56f6dc6407eac64f8b7486fbea64cc + languageName: node + linkType: hard + +"@types/jsdom@npm:^20.0.0": + version: 20.0.1 + resolution: "@types/jsdom@npm:20.0.1" + dependencies: + "@types/node": "npm:*" + "@types/tough-cookie": "npm:*" + parse5: "npm:^7.0.0" + checksum: 10c0/3d4b2a3eab145674ee6da482607c5e48977869109f0f62560bf91ae1a792c9e847ac7c6aaf243ed2e97333cb3c51aef314ffa54a19ef174b8f9592dfcb836b25 + languageName: node + linkType: hard + +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + languageName: node + linkType: hard + +"@types/linkify-it@npm:*": + version: 5.0.0 + resolution: "@types/linkify-it@npm:5.0.0" + checksum: 10c0/7bbbf45b9dde17bf3f184fee585aef0e7342f6954f0377a24e4ff42ab5a85d5b806aaa5c8d16e2faf2a6b87b2d94467a196b7d2b85c9c7de2f0eaac5487aaab8 + languageName: node + linkType: hard + +"@types/markdown-it@npm:^12.2.3": + version: 12.2.3 + resolution: "@types/markdown-it@npm:12.2.3" + dependencies: + "@types/linkify-it": "npm:*" + "@types/mdurl": "npm:*" + checksum: 10c0/f72e08f69d76be2e30cd367fd6e5302c6878aa44e5b1a952fe7e41280044502bcb9bac8459ad94f6bb5e4f9c4cb52803950609ad66786f0fddc3a8bd533f777d + languageName: node + linkType: hard + +"@types/mdurl@npm:*": + version: 2.0.0 + resolution: "@types/mdurl@npm:2.0.0" + checksum: 10c0/cde7bb571630ed1ceb3b92a28f7b59890bb38b8f34cd35326e2df43eebfc74985e6aa6fd4184e307393bad8a9e0783a519a3f9d13c8e03788c0f98e5ec869c5e + languageName: node + linkType: hard + +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: 10c0/c2ee31cd9b993804df33a694d5aa3fa536511a49f2e06eeab0b484fef59b4483777dbb9e42a4198a0809ffbf698081fdbca1e5c2218b82b91603dfab10a10fbc + languageName: node + linkType: hard + +"@types/minimatch@npm:*": + version: 5.1.2 + resolution: "@types/minimatch@npm:5.1.2" + checksum: 10c0/83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 + languageName: node + linkType: hard + +"@types/minimatch@npm:^3.0.4": + version: 3.0.5 + resolution: "@types/minimatch@npm:3.0.5" + checksum: 10c0/a1a19ba342d6f39b569510f621ae4bbe972dc9378d15e9a5e47904c440ee60744f5b09225bc73be1c6490e3a9c938eee69eb53debf55ce1f15761201aa965f97 + languageName: node + linkType: hard + +"@types/minimist@npm:^1.2.0": + version: 1.2.5 + resolution: "@types/minimist@npm:1.2.5" + checksum: 10c0/3f791258d8e99a1d7d0ca2bda1ca6ea5a94e5e7b8fc6cde84dd79b0552da6fb68ade750f0e17718f6587783c24254bbca0357648dd59dc3812c150305cabdc46 + languageName: node + linkType: hard + +"@types/mocha@npm:*": + version: 10.0.8 + resolution: "@types/mocha@npm:10.0.8" + checksum: 10c0/af01f70cf2888762e79e91219dcc28b5d82c85d9a1c8ba4606d3ae30748be7e2cb9f06d680ad36112c78f5e568d0423a65ba8b7c53d02d37b193787bbc03d088 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: 10c0/ac80bd90012116ceb2d188fde62d96830ca847823e8ca71255616bc73991aa7d9f057b8bfab79e8ee44ffefb031ddd1bcce63ea82f9e66f7c31ec02d2d823ccc + languageName: node + linkType: hard + +"@types/node-forge@npm:^1.3.0": + version: 1.3.11 + resolution: "@types/node-forge@npm:1.3.11" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3d7d23ca0ba38ac0cf74028393bd70f31169ab9aba43f21deb787840170d307d662644bac07287495effe2812ddd7ac8a14dbd43f16c2936bbb06312e96fc3b9 + languageName: node + linkType: hard + +"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^22.7.4": + version: 22.7.4 + resolution: "@types/node@npm:22.7.4" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10c0/c22bf54515c78ff3170142c1e718b90e2a0003419dc2d55f79c9c9362edd590a6ab1450deb09ff6e1b32d1b4698da407930b16285e8be3a009ea6cd2695cac01 + languageName: node + linkType: hard + +"@types/node@npm:11.11.6": + version: 11.11.6 + resolution: "@types/node@npm:11.11.6" + checksum: 10c0/8a04d16475dc8b88031b8d9d97cbf11612802940c0514ea661c41ae02190e30fb3c69a870a523b9918477169f8c7e0d01df85d4648b9fe873d087d502fd7ba7e + languageName: node + linkType: hard + +"@types/node@npm:^14.14.31": + version: 14.18.63 + resolution: "@types/node@npm:14.18.63" + checksum: 10c0/626a371419a6a0e11ca460b22bb4894abe5d75c303739588bc96267e380aa8b90ba5a87bc552400584f0ac2a84b5c458dadcbcf0dfd2396ebeb765f7a7f95893 + languageName: node + linkType: hard + +"@types/node@npm:^18.0.0": + version: 18.19.54 + resolution: "@types/node@npm:18.19.54" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/ea3e2530bb887d4d9c5eb58f0dd16b2af37e4323da2970f3b513403f45db1e0d54ba39b3de838ba7b2d40d38329aeed0bda4a0a39922d006c68aca5ee22e6e46 + languageName: node + linkType: hard + +"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1": + version: 2.4.4 + resolution: "@types/normalize-package-data@npm:2.4.4" + checksum: 10c0/aef7bb9b015883d6f4119c423dd28c4bdc17b0e8a0ccf112c78b4fe0e91fbc4af7c6204b04bba0e199a57d2f3fbbd5b4a14bf8739bf9d2a39b2a0aad545e0f86 + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 + languageName: node + linkType: hard + +"@types/prop-types@npm:*": + version: 15.7.13 + resolution: "@types/prop-types@npm:15.7.13" + checksum: 10c0/1b20fc67281902c6743379960247bc161f3f0406ffc0df8e7058745a85ea1538612109db0406290512947f9632fe9e10e7337bf0ce6338a91d6c948df16a7c61 + languageName: node + linkType: hard + +"@types/qrcode@npm:1.5.5": + version: 1.5.5 + resolution: "@types/qrcode@npm:1.5.5" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/b8e6709905d1edb32dda414408acab18ac4aefcbe7bf96d9e32ba94218f45b99c8938ba7a09863ce82a67b226195099fd0f48881d16ee844899087b7f249955f + languageName: node + linkType: hard + +"@types/qs@npm:*": + version: 6.9.16 + resolution: "@types/qs@npm:6.9.16" + checksum: 10c0/a4e871b80fff623755e356fd1f225aea45ff7a29da30f99fddee1a05f4f5f33485b314ab5758145144ed45708f97e44595aa9a8368e9bbc083932f931b12dbb6 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 10c0/361bb3e964ec5133fa40644a0b942279ed5df1949f21321d77de79f48b728d39253e5ce0408c9c17e4e0fd95ca7899da36841686393b9f7a1e209916e9381a3c + languageName: node + linkType: hard + +"@types/react-dom@npm:18.0.9": + version: 18.0.9 + resolution: "@types/react-dom@npm:18.0.9" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/1c85b0889f15631132816fba93bf3aaa7b11cd0ce6f4a825d3c863a46b1b8d0b7fcdf03d7fcdf761f4a2e38312e5f26fc9b9ba34b486ee9f160477b9103625af + languageName: node + linkType: hard + +"@types/react-dom@npm:>=16.9.0, @types/react-dom@npm:^18.0.0": + version: 18.3.0 + resolution: "@types/react-dom@npm:18.3.0" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/6c90d2ed72c5a0e440d2c75d99287e4b5df3e7b011838cdc03ae5cd518ab52164d86990e73246b9d812eaf02ec351d74e3b4f5bd325bf341e13bf980392fd53b + languageName: node + linkType: hard + +"@types/react-test-renderer@npm:>=16.9.0": + version: 18.3.0 + resolution: "@types/react-test-renderer@npm:18.3.0" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/3c9748be52e8e659e7adf91dea6939486463264e6f633bf21c4cb116de18af7bef0595568a1e588160420b2f65289473075dda1cb417c2875df8cf7a09f5d913 + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:>=16.9.0": + version: 18.3.11 + resolution: "@types/react@npm:18.3.11" + dependencies: + "@types/prop-types": "npm:*" + csstype: "npm:^3.0.2" + checksum: 10c0/ce80512246ca5bda69db85b9f4f1835189334acfb6b2c4f3eda8cabff1ff1a3ea9ce4f3b895bdbc18c94140aa45592331aa3fdeb557f525c1b048de7ce84fc0e + languageName: node + linkType: hard + +"@types/react@npm:18.0.25": + version: 18.0.25 + resolution: "@types/react@npm:18.0.25" + dependencies: + "@types/prop-types": "npm:*" + "@types/scheduler": "npm:*" + csstype: "npm:^3.0.2" + checksum: 10c0/5d30dbf46124a63ee832864bf38ce42de2e8924dc53470f14742343503a2cf1851b6b4f8b892ef661e1a670561f4c9052d782e419d314912e54626f3296e49b6 + languageName: node + linkType: hard + +"@types/regenerator-runtime@npm:0.13.1": + version: 0.13.1 + resolution: "@types/regenerator-runtime@npm:0.13.1" + checksum: 10c0/3d50b2cf3b4a4d5e62a76c476ca63bb2c7f4cc5bfec3968a8c73c1019b98f979b71c7e85ffac302172b547248e5b31bdf39aba1fb3442392c63c0ca18f1deb16 + languageName: node + linkType: hard + +"@types/resolve@npm:1.17.1": + version: 1.17.1 + resolution: "@types/resolve@npm:1.17.1" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/6eeb9c27d99bf4b393bf168d43208f63e78cefca5644662a0bdb2bdbf8352386f4f3aca66add138fc41bce5f66fd48a0de430a1473f11b612fbed0375ae78031 + languageName: node + linkType: hard + +"@types/retry@npm:0.12.0": + version: 0.12.0 + resolution: "@types/retry@npm:0.12.0" + checksum: 10c0/7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 + languageName: node + linkType: hard + +"@types/scheduler@npm:*": + version: 0.23.0 + resolution: "@types/scheduler@npm:0.23.0" + checksum: 10c0/5cf7f2ba3732b74877559eb20b19f95fcd0a20c17dcb20e75a7ca7c7369cd455aeb2d406b3ff5a38168a9750da3bad78dd20d96d11118468b78f4959b8e56090 + languageName: node + linkType: hard + +"@types/secp256k1@npm:^4.0.6": + version: 4.0.6 + resolution: "@types/secp256k1@npm:4.0.6" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/0e391316ae30c218779583b626382a56546ddbefb65f1ff9cf5e078af8a7118f67f3e66e30914399cc6f8710c424d0d8c3f34262ffb1f429c6ad911fd0d0bc26 + languageName: node + linkType: hard + +"@types/semver@npm:^7.3.12": + version: 7.5.8 + resolution: "@types/semver@npm:7.5.8" + checksum: 10c0/8663ff927234d1c5fcc04b33062cb2b9fcfbe0f5f351ed26c4d1e1581657deebd506b41ff7fdf89e787e3d33ce05854bc01686379b89e9c49b564c4cfa988efa + languageName: node + linkType: hard + +"@types/send@npm:*": + version: 0.17.4 + resolution: "@types/send@npm:0.17.4" + dependencies: + "@types/mime": "npm:^1" + "@types/node": "npm:*" + checksum: 10c0/7f17fa696cb83be0a104b04b424fdedc7eaba1c9a34b06027239aba513b398a0e2b7279778af521f516a397ced417c96960e5f50fcfce40c4bc4509fb1a5883c + languageName: node + linkType: hard + +"@types/serve-index@npm:^1.9.1": + version: 1.9.4 + resolution: "@types/serve-index@npm:1.9.4" + dependencies: + "@types/express": "npm:*" + checksum: 10c0/94c1b9e8f1ea36a229e098e1643d5665d9371f8c2658521718e259130a237c447059b903bac0dcc96ee2c15fd63f49aa647099b7d0d437a67a6946527a837438 + languageName: node + linkType: hard + +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10": + version: 1.15.7 + resolution: "@types/serve-static@npm:1.15.7" + dependencies: + "@types/http-errors": "npm:*" + "@types/node": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/26ec864d3a626ea627f8b09c122b623499d2221bbf2f470127f4c9ebfe92bd8a6bb5157001372d4c4bd0dd37a1691620217d9dc4df5aa8f779f3fd996b1c60ae + languageName: node + linkType: hard + +"@types/sinonjs__fake-timers@npm:8.1.1": + version: 8.1.1 + resolution: "@types/sinonjs__fake-timers@npm:8.1.1" + checksum: 10c0/e2e6c425a548177c0930c2f9b82d3951956c9701b9ebf59623d5ad2c3229c523d3c0d598e79fe7392a239657abd3dbe3676be0650ce438bcd1199ee3b617a4d7 + languageName: node + linkType: hard + +"@types/sizzle@npm:^2.3.2": + version: 2.3.8 + resolution: "@types/sizzle@npm:2.3.8" + checksum: 10c0/ab5460147ae6680cc20c2223a8f17d9f7c97144b70f00a222a1c32d68b5207696d48177ab9784dda88c74d93ed5a78dd31f74d271b15382520b423c81b4aac89 + languageName: node + linkType: hard + +"@types/sockjs@npm:^0.3.33": + version: 0.3.36 + resolution: "@types/sockjs@npm:0.3.36" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/b20b7820ee813f22de4f2ce98bdd12c68c930e016a8912b1ed967595ac0d8a4cbbff44f4d486dd97f77f5927e7b5725bdac7472c9ec5b27f53a5a13179f0612f + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/testing-library__jest-dom@npm:^5.9.1": + version: 5.14.9 + resolution: "@types/testing-library__jest-dom@npm:5.14.9" + dependencies: + "@types/jest": "npm:*" + checksum: 10c0/91f7b15e8813b515912c54da44464fb60ecf21162b7cae2272fcb3918074f4e1387dc2beca1f5041667e77b76b34253c39675ea4e0b3f28f102d8cc87fdba9fa + languageName: node + linkType: hard + +"@types/tough-cookie@npm:*": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 10c0/68c6921721a3dcb40451543db2174a145ef915bc8bcbe7ad4e59194a0238e776e782b896c7a59f4b93ac6acefca9161fccb31d1ce3b3445cb6faa467297fb473 + languageName: node + linkType: hard + +"@types/trusted-types@npm:^2.0.2": + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 10c0/4c4855f10de7c6c135e0d32ce462419d8abbbc33713b31d294596c0cc34ae1fa6112a2f9da729c8f7a20707782b0d69da3b1f8df6645b0366d08825ca1522e0c + languageName: node + linkType: hard + +"@types/ua-parser-js@npm:^0.7.36": + version: 0.7.39 + resolution: "@types/ua-parser-js@npm:0.7.39" + checksum: 10c0/fea522f42dfc2854d9c93144a13c3db3bbe1c791458451db06d46bec7e1dbbe945d1542e02bb38378e39a04bdb7810b43e2ead26f9e6c250832e187312522708 + languageName: node + linkType: hard + +"@types/uuid@npm:^10.0.0": + version: 10.0.0 + resolution: "@types/uuid@npm:10.0.0" + checksum: 10c0/9a1404bf287164481cb9b97f6bb638f78f955be57c40c6513b7655160beb29df6f84c915aaf4089a1559c216557dc4d2f79b48d978742d3ae10b937420ddac60 + languageName: node + linkType: hard + +"@types/w3c-web-hid@npm:1.0.3": + version: 1.0.3 + resolution: "@types/w3c-web-hid@npm:1.0.3" + checksum: 10c0/3dd3c573cef9158600c22c68d2b7762d75f01d3065b46b13df8e4a0d49d6a0d1abf64a8f9c871af06efb2c5d271e6c44c6a8f8b1807eab2718a1ff4e21077837 + languageName: node + linkType: hard + +"@types/w3c-web-usb@npm:1.0.6": + version: 1.0.6 + resolution: "@types/w3c-web-usb@npm:1.0.6" + checksum: 10c0/3e3451937176d883478ddf7fbe93630fa02282687276d584dbadc74a445b7a80422a10151ad209f22cf2dffa258a2405f62bfe462cee9855842f57ce7f30ad28 + languageName: node + linkType: hard + +"@types/ws@npm:^8.5.1, @types/ws@npm:^8.5.5": + version: 8.5.12 + resolution: "@types/ws@npm:8.5.12" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3fd77c9e4e05c24ce42bfc7647f7506b08c40a40fe2aea236ef6d4e96fc7cb4006a81ed1b28ec9c457e177a74a72924f4768b7b4652680b42dfd52bc380e15f9 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b + languageName: node + linkType: hard + +"@types/yauzl@npm:^2.9.1": + version: 2.10.3 + resolution: "@types/yauzl@npm:2.10.3" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/f1b7c1b99fef9f2fe7f1985ef7426d0cebe48cd031f1780fcdc7451eec7e31ac97028f16f50121a59bcf53086a1fc8c856fd5b7d3e00970e43d92ae27d6b43dc + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:5.58.0": + version: 5.58.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.58.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:5.58.0" + "@typescript-eslint/type-utils": "npm:5.58.0" + "@typescript-eslint/utils": "npm:5.58.0" + debug: "npm:^4.3.4" + grapheme-splitter: "npm:^1.0.4" + ignore: "npm:^5.2.0" + natural-compare-lite: "npm:^1.4.0" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/cda31ae6ff09c742f921304ea1a2a0d0823f7e20d7969ba6320ab14df2b3269b93a61eded96a59f01cfd24f28efb91e461e42bb09f493ed013936a899697a868 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:5.58.0": + version: 5.58.0 + resolution: "@typescript-eslint/parser@npm:5.58.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:5.58.0" + "@typescript-eslint/types": "npm:5.58.0" + "@typescript-eslint/typescript-estree": "npm:5.58.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/fb7a4ce59eb803d29705e0134b6731823d9d7b56dd76a4de4ff07eb09d56cc851ed9988ecacdc2d0cbd929115a02ce564b0bb1b97d8732e05707dbe4332460ae + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0": + version: 7.2.0 + resolution: "@typescript-eslint/parser@npm:7.2.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:7.2.0" + "@typescript-eslint/types": "npm:7.2.0" + "@typescript-eslint/typescript-estree": "npm:7.2.0" + "@typescript-eslint/visitor-keys": "npm:7.2.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.56.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/11ce36c68212fdbf98fc6fd32ba0977d46b645fd669a3f4fdb8be2036225f86ad005b31a66f97097e90517c44c92cf9cc5fb1d6e9647ee2fa125c4af21cdb477 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.43.0": + version: 5.43.0 + resolution: "@typescript-eslint/scope-manager@npm:5.43.0" + dependencies: + "@typescript-eslint/types": "npm:5.43.0" + "@typescript-eslint/visitor-keys": "npm:5.43.0" + checksum: 10c0/f30f7ae64cf518123959c6189508372041a60acad8b412c5fe628214707161f7cb66730aca575be0bca2ccee83c2b59de6c1c139cfb269f6b344cd0921a466b4 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.58.0": + version: 5.58.0 + resolution: "@typescript-eslint/scope-manager@npm:5.58.0" + dependencies: + "@typescript-eslint/types": "npm:5.58.0" + "@typescript-eslint/visitor-keys": "npm:5.58.0" + checksum: 10c0/66c82609ac6c9cf00e163126619e7c487adc938f02e4567a2c26319916a175b9aee792aa80bd319a20848c834c6e599cd302c9f5b68c64b95d02f024f511ac66 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:7.2.0": + version: 7.2.0 + resolution: "@typescript-eslint/scope-manager@npm:7.2.0" + dependencies: + "@typescript-eslint/types": "npm:7.2.0" + "@typescript-eslint/visitor-keys": "npm:7.2.0" + checksum: 10c0/4d088c127e6ba1a7de8567f70684779083be24b48746c3b4a86a0ec7062bca58693ee08482349ad6572a17ada8aa6f26b74d1c7139c8fcf7101fa09a572e0ea6 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.43.0": + version: 5.43.0 + resolution: "@typescript-eslint/type-utils@npm:5.43.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:5.43.0" + "@typescript-eslint/utils": "npm:5.43.0" + debug: "npm:^4.3.4" + tsutils: "npm:^3.21.0" + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/4ed87a1856ab556d2c456c6696ad791dc71b7ae4e745281eba148418695b2a5848403a607352516c8f2007b10dd4b0884a356e8edda51f1d6fcb52d4216c600a + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.58.0": + version: 5.58.0 + resolution: "@typescript-eslint/type-utils@npm:5.58.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:5.58.0" + "@typescript-eslint/utils": "npm:5.58.0" + debug: "npm:^4.3.4" + tsutils: "npm:^3.21.0" + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/3ca4443f43b8263745afda3ff05517074da77d1dad25867845d386b29b012548b720d12334aca8bf15323a76557099e4ce3025a5a0fa84e070f6a4c1dc36d44e + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.43.0": + version: 5.43.0 + resolution: "@typescript-eslint/types@npm:5.43.0" + checksum: 10c0/93feae3f3a51100f46076649cc02bcd80bdeec88670a8fdfa63927b614f90b039cf1ec4f98367107112e744b567d35eec5fedc465aaea0a92aa835933dfc45e5 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.58.0": + version: 5.58.0 + resolution: "@typescript-eslint/types@npm:5.58.0" + checksum: 10c0/3e5973909a5c585f5aebf919eec8ac213e9b5089c7357ea832ffa2bd39df70dce0b806d4bcc39a15e309830dfbf7bdf22d9808ab3c466729b8536e9d7e83eccc + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:7.2.0": + version: 7.2.0 + resolution: "@typescript-eslint/types@npm:7.2.0" + checksum: 10c0/135aae061720185855bea61ea6cfd33f4801d2de57f65e50079bbdb505100f844632aa4e4bdeec9e9e79d29aaddad949178d0e918e41867da6ab4b1390820e33 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.43.0": + version: 5.43.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.43.0" + dependencies: + "@typescript-eslint/types": "npm:5.43.0" + "@typescript-eslint/visitor-keys": "npm:5.43.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/ba08a7093d285966bef5938d3874bbad647ca929bae245e3d67ef22062868e540661b42c13a3166b052d8d6738f18ab83df9207fbd632ffdf255001f2f329ce8 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.58.0": + version: 5.58.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.58.0" + dependencies: + "@typescript-eslint/types": "npm:5.58.0" + "@typescript-eslint/visitor-keys": "npm:5.58.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/51c2a92217a1ccc01acf3c5c371b8c4b48b066cb6341441c35b74b6f3e13d21f81e0aed041215f3f4cf73320f5cd6cc3061801c51a3049958ee9a171a6efa196 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:7.2.0": + version: 7.2.0 + resolution: "@typescript-eslint/typescript-estree@npm:7.2.0" + dependencies: + "@typescript-eslint/types": "npm:7.2.0" + "@typescript-eslint/visitor-keys": "npm:7.2.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/2730bb17730e6f3ca4061f00688a70386a808f5d174fdeb757c3cfa92c455373f69080df33237c1a8970e818af0cea0ae5a083970ed8ba493f3b04458c6f9271 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.43.0": + version: 5.43.0 + resolution: "@typescript-eslint/utils@npm:5.43.0" + dependencies: + "@types/json-schema": "npm:^7.0.9" + "@types/semver": "npm:^7.3.12" + "@typescript-eslint/scope-manager": "npm:5.43.0" + "@typescript-eslint/types": "npm:5.43.0" + "@typescript-eslint/typescript-estree": "npm:5.43.0" + eslint-scope: "npm:^5.1.1" + eslint-utils: "npm:^3.0.0" + semver: "npm:^7.3.7" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/8e8ce2c710601cdaba8919382f81383aa0c4e8f0d01755cd35c7ad08e145b09bd43e1b7fa032bc685490057c89b84fc1082c3f4bde0bed20ef54363fcb7200c0 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.58.0": + version: 5.58.0 + resolution: "@typescript-eslint/utils@npm:5.58.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@types/json-schema": "npm:^7.0.9" + "@types/semver": "npm:^7.3.12" + "@typescript-eslint/scope-manager": "npm:5.58.0" + "@typescript-eslint/types": "npm:5.58.0" + "@typescript-eslint/typescript-estree": "npm:5.58.0" + eslint-scope: "npm:^5.1.1" + semver: "npm:^7.3.7" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/71ea338d9b67b59792e9d9a82b723acbee815534044294b169e3727f5394445d95a6200c919f0c28020bc5954df0f7110e9d0a4586e77ebebcd1662c06b30157 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.43.0": + version: 5.43.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.43.0" + dependencies: + "@typescript-eslint/types": "npm:5.43.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/8a5511dcfffd0167d0db9f71b995ca79353b7fe196a91a6c64e2161640ad5fb622f402930bac81febde204fe7946940e395d3e31f9c8df69cb2a1349c5ac7ef7 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.58.0": + version: 5.58.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.58.0" + dependencies: + "@typescript-eslint/types": "npm:5.58.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/e41b0cf8bf766c491fe96e26b4cd20e6af4dbe85ff773a32887b7557ffd199117d8cdc86ceef5ce224d06c5e14d54a8edb679e58185f5a9c6b450615eaac6f30 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:7.2.0": + version: 7.2.0 + resolution: "@typescript-eslint/visitor-keys@npm:7.2.0" + dependencies: + "@typescript-eslint/types": "npm:7.2.0" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/2d7467495b2b76f3edb1b3047e97076c2242e7eca6d50bbbdd88219f9ff754dbcb9334a0568fe0ceb4c562823980938bd278aa2ba53da6343e7d99a167924f24 + languageName: node + linkType: hard + +"@vitejs/plugin-basic-ssl@npm:1.0.1": + version: 1.0.1 + resolution: "@vitejs/plugin-basic-ssl@npm:1.0.1" + peerDependencies: + vite: ^3.0.0 || ^4.0.0 + checksum: 10c0/d18d5454e7323826e6d33631ebceb2c1d331a1dd9d171e42096e38983f3489708b44c085c339a94c23af0b3976728eb78fe4aa5c1aa6cf905e83ac1800d9d10c + languageName: node + linkType: hard + +"@wagmi/connectors@npm:5.0.21": + version: 5.0.21 + resolution: "@wagmi/connectors@npm:5.0.21" + dependencies: + "@coinbase/wallet-sdk": "npm:4.0.4" + "@metamask/sdk": "npm:0.26.4" + "@safe-global/safe-apps-provider": "npm:0.18.1" + "@safe-global/safe-apps-sdk": "npm:8.1.0" + "@walletconnect/ethereum-provider": "npm:2.13.0" + "@walletconnect/modal": "npm:2.6.2" + cbw-sdk: "npm:@coinbase/wallet-sdk@3.9.3" + peerDependencies: + "@wagmi/core": 2.11.6 + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/9530d5f35be860526fdf86acfded4fbc7b8b9cc929182828452d3c1d518363b8d0942c3cc6e9088b44fa3832a2606551fb2bb888b2aced45629b97a4f27946ad + languageName: node + linkType: hard + +"@wagmi/connectors@npm:5.1.15": + version: 5.1.15 + resolution: "@wagmi/connectors@npm:5.1.15" + dependencies: + "@coinbase/wallet-sdk": "npm:4.0.4" + "@metamask/sdk": "npm:0.28.4" + "@safe-global/safe-apps-provider": "npm:0.18.3" + "@safe-global/safe-apps-sdk": "npm:9.1.0" + "@walletconnect/ethereum-provider": "npm:2.17.0" + "@walletconnect/modal": "npm:2.7.0" + cbw-sdk: "npm:@coinbase/wallet-sdk@3.9.3" + peerDependencies: + "@wagmi/core": 2.13.8 + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/99b282618772aaf5321875e89b4dd8e03c0a2de47a6c4faa52704b3fcd6bfcba2548504b79424cd96cc939b41df20c521241f402d6b3021f6858618aad057b0f + languageName: node + linkType: hard + +"@wagmi/core@npm:*, @wagmi/core@npm:2.13.8": + version: 2.13.8 + resolution: "@wagmi/core@npm:2.13.8" + dependencies: + eventemitter3: "npm:5.0.1" + mipd: "npm:0.0.7" + zustand: "npm:4.4.1" + peerDependencies: + "@tanstack/query-core": ">=5.0.0" + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + "@tanstack/query-core": + optional: true + typescript: + optional: true + checksum: 10c0/20adc34fd2e400ae977745a6c9ca11f1fc35c022ee806b52997c3de510734835dec002fe4c0f8f916cdffc199eea7f301c3ee0e7d131e38969afbd357a32e6fa + languageName: node + linkType: hard + +"@wagmi/core@npm:2.10.6": + version: 2.10.6 + resolution: "@wagmi/core@npm:2.10.6" + dependencies: + eventemitter3: "npm:5.0.1" + mipd: "npm:0.0.5" + zustand: "npm:4.4.1" + peerDependencies: + "@tanstack/query-core": ">=5.0.0" + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + "@tanstack/query-core": + optional: true + typescript: + optional: true + checksum: 10c0/15ae75b1e68ef18625512dddd2f67ef18e320848277e01c82ea4f6b8209db3de54594a0224e7429ae7ded77f487257593220373e07fb2f7bf4d817746007fcdd + languageName: node + linkType: hard + +"@wagmi/core@npm:2.11.6": + version: 2.11.6 + resolution: "@wagmi/core@npm:2.11.6" + dependencies: + eventemitter3: "npm:5.0.1" + mipd: "npm:0.0.5" + zustand: "npm:4.4.1" + peerDependencies: + "@tanstack/query-core": ">=5.0.0" + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + "@tanstack/query-core": + optional: true + typescript: + optional: true + checksum: 10c0/a19145915d55cac4c51a119fb762c8d01e14d910f642bb45f9c30ea6d575773acb70f2abd8d9e24e6eff881d7f3515b93eb758a87b6a9f6d8b9c608d5b1a388e + languageName: node + linkType: hard + +"@walletconnect/core@npm:2.13.0": + version: 2.13.0 + resolution: "@walletconnect/core@npm:2.13.0" + dependencies: + "@walletconnect/heartbeat": "npm:1.2.2" + "@walletconnect/jsonrpc-provider": "npm:1.0.14" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/jsonrpc-ws-connection": "npm:1.0.14" + "@walletconnect/keyvaluestorage": "npm:1.1.1" + "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/relay-api": "npm:1.0.10" + "@walletconnect/relay-auth": "npm:1.0.4" + "@walletconnect/safe-json": "npm:1.0.2" + "@walletconnect/time": "npm:1.0.2" + "@walletconnect/types": "npm:2.13.0" + "@walletconnect/utils": "npm:2.13.0" + events: "npm:3.3.0" + isomorphic-unfetch: "npm:3.1.0" + lodash.isequal: "npm:4.5.0" + uint8arrays: "npm:3.1.0" + checksum: 10c0/e1356eb8ac94f8f6743814337607244557280d43a6e2ec14591beb21dca0e73cc79b16f0a2ace60ef447149778c5383a1fd4eac67788372d249c8c5f6d8c7dc2 + languageName: node + linkType: hard + +"@walletconnect/core@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/core@npm:2.17.0" + dependencies: + "@walletconnect/heartbeat": "npm:1.2.2" + "@walletconnect/jsonrpc-provider": "npm:1.0.14" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/jsonrpc-ws-connection": "npm:1.0.14" + "@walletconnect/keyvaluestorage": "npm:1.1.1" + "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/relay-api": "npm:1.0.11" + "@walletconnect/relay-auth": "npm:1.0.4" + "@walletconnect/safe-json": "npm:1.0.2" + "@walletconnect/time": "npm:1.0.2" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" + events: "npm:3.3.0" + lodash.isequal: "npm:4.5.0" + uint8arrays: "npm:3.1.0" + checksum: 10c0/34ae5b9b68c08c1dd3ebb2a6ebff8697307e76fbfe4d6b51d5d090da5cd1613e1c66fa5ac3a87c914333458d7b5bf075bb664292f6b2c7d438c72f706d87416d + languageName: node + linkType: hard + +"@walletconnect/core@npm:2.17.1": + version: 2.17.1 + resolution: "@walletconnect/core@npm:2.17.1" + dependencies: + "@walletconnect/heartbeat": "npm:1.2.2" + "@walletconnect/jsonrpc-provider": "npm:1.0.14" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/jsonrpc-ws-connection": "npm:1.0.14" + "@walletconnect/keyvaluestorage": "npm:1.1.1" + "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/relay-api": "npm:1.0.11" + "@walletconnect/relay-auth": "npm:1.0.4" + "@walletconnect/safe-json": "npm:1.0.2" + "@walletconnect/time": "npm:1.0.2" + "@walletconnect/types": "npm:2.17.1" + "@walletconnect/utils": "npm:2.17.1" + "@walletconnect/window-getters": "npm:1.0.1" + events: "npm:3.3.0" + lodash.isequal: "npm:4.5.0" + uint8arrays: "npm:3.1.0" + checksum: 10c0/57999472fcde27bf02fae3a0e2182379deb8e81978c68edb0a5d7616f96a515c8121b00865e99c5612d09a9dc6e7afebc76ea43412ab7e0eba88c4c88ed951bf + languageName: node + linkType: hard + +"@walletconnect/environment@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/environment@npm:1.0.1" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/08eacce6452950a17f4209c443bd4db6bf7bddfc860593bdbd49edda9d08821696dee79e5617a954fbe90ff32c1d1f1691ef0c77455ed3e4201b328856a5e2f7 + languageName: node + linkType: hard + +"@walletconnect/ethereum-provider@npm:2.13.0": + version: 2.13.0 + resolution: "@walletconnect/ethereum-provider@npm:2.13.0" + dependencies: + "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" + "@walletconnect/jsonrpc-provider": "npm:1.0.14" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/modal": "npm:2.6.2" + "@walletconnect/sign-client": "npm:2.13.0" + "@walletconnect/types": "npm:2.13.0" + "@walletconnect/universal-provider": "npm:2.13.0" + "@walletconnect/utils": "npm:2.13.0" + events: "npm:3.3.0" + checksum: 10c0/4bc3c76b7a9e81ac505fcff99244bfa9f14419ee2de322e491dacd94669923adf5e9e1a2298ae84b33e3d5985a0bfab6b7715237e6f2ce23ec02c67dedb58898 + languageName: node + linkType: hard + +"@walletconnect/ethereum-provider@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/ethereum-provider@npm:2.17.0" + dependencies: + "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" + "@walletconnect/jsonrpc-provider": "npm:1.0.14" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/modal": "npm:2.7.0" + "@walletconnect/sign-client": "npm:2.17.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/universal-provider": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" + events: "npm:3.3.0" + checksum: 10c0/b046a9c296e95b22841f0b2efd28a4ce1a38529a9ba412d3c8ffc482879d79c3d2a24b8c0ec712baecf781938b4321ab5c1ecad5573d078add7c47b0cfd08a25 + languageName: node + linkType: hard + +"@walletconnect/events@npm:1.0.1, @walletconnect/events@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/events@npm:1.0.1" + dependencies: + keyvaluestorage-interface: "npm:^1.0.0" + tslib: "npm:1.14.1" + checksum: 10c0/919a97e1dacf7096aefe07af810362cfc190533a576dcfa21387295d825a3c3d5f90bedee73235b1b343f5c696f242d7bffc5ea3359d3833541349ca23f50df8 + languageName: node + linkType: hard + +"@walletconnect/heartbeat@npm:1.2.1": + version: 1.2.1 + resolution: "@walletconnect/heartbeat@npm:1.2.1" + dependencies: + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/time": "npm:^1.0.2" + tslib: "npm:1.14.1" + checksum: 10c0/5ad46f26dcb7b9b3227f004cd74b18741d4cd32c21825a036eb03985c67a0cf859c285bc5635401966a99129e854d72de3458ff592370575ef7e52f5dd12ebbc + languageName: node + linkType: hard + +"@walletconnect/heartbeat@npm:1.2.2": + version: 1.2.2 + resolution: "@walletconnect/heartbeat@npm:1.2.2" + dependencies: + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/time": "npm:^1.0.2" + events: "npm:^3.3.0" + checksum: 10c0/a97b07764c397fe3cd26e8ea4233ecc8a26049624df7edc05290d286266bc5ba1de740d12c50dc1b7e8605198c5974e34e2d5318087bd4e9db246e7b273f4592 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-http-connection@npm:1.0.8": + version: 1.0.8 + resolution: "@walletconnect/jsonrpc-http-connection@npm:1.0.8" + dependencies: + "@walletconnect/jsonrpc-utils": "npm:^1.0.6" + "@walletconnect/safe-json": "npm:^1.0.1" + cross-fetch: "npm:^3.1.4" + events: "npm:^3.3.0" + checksum: 10c0/cfac9ae74085d383ebc6edf075aeff01312818ac95e706cb8538ef4d4e6d82e75fb51529b3a9b65fa56a3f0f32a1738defad61713ed8a5f67cee25a79b6b4614 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-provider@npm:1.0.14": + version: 1.0.14 + resolution: "@walletconnect/jsonrpc-provider@npm:1.0.14" + dependencies: + "@walletconnect/jsonrpc-utils": "npm:^1.0.8" + "@walletconnect/safe-json": "npm:^1.0.2" + events: "npm:^3.3.0" + checksum: 10c0/9801bd516d81e92977b6add213da91e0e4a7a5915ad22685a4d2a733bab6199e9053485b76340cd724c7faa17a1b0eb842696247944fd57fb581488a2e1bed75 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-types@npm:1.0.3": + version: 1.0.3 + resolution: "@walletconnect/jsonrpc-types@npm:1.0.3" + dependencies: + keyvaluestorage-interface: "npm:^1.0.0" + tslib: "npm:1.14.1" + checksum: 10c0/a0fc8a88c62795bf4bf83d4e98a4e2cdd659ef70c73642582089fdf0994c54fd8050aa6cca85cfdcca6b77994e71334895e7a19649c325a8c822b059c2003884 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-types@npm:1.0.4, @walletconnect/jsonrpc-types@npm:^1.0.2, @walletconnect/jsonrpc-types@npm:^1.0.3": + version: 1.0.4 + resolution: "@walletconnect/jsonrpc-types@npm:1.0.4" + dependencies: + events: "npm:^3.3.0" + keyvaluestorage-interface: "npm:^1.0.0" + checksum: 10c0/752978685b0596a4ba02e1b689d23873e464460e4f376c97ef63e6b3ab273658ca062de2bfcaa8a498d31db0c98be98c8bbfbe5142b256a4b3ef425e1707f353 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-utils@npm:1.0.8, @walletconnect/jsonrpc-utils@npm:^1.0.6, @walletconnect/jsonrpc-utils@npm:^1.0.8": + version: 1.0.8 + resolution: "@walletconnect/jsonrpc-utils@npm:1.0.8" + dependencies: + "@walletconnect/environment": "npm:^1.0.1" + "@walletconnect/jsonrpc-types": "npm:^1.0.3" + tslib: "npm:1.14.1" + checksum: 10c0/e4a6bd801cf555bca775e03d961d1fe5ad0a22838e3496adda43ab4020a73d1b38de7096c06940e51f00fccccc734cd422fe4f1f7a8682302467b9c4d2a93d5d + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-ws-connection@npm:1.0.14": + version: 1.0.14 + resolution: "@walletconnect/jsonrpc-ws-connection@npm:1.0.14" + dependencies: + "@walletconnect/jsonrpc-utils": "npm:^1.0.6" + "@walletconnect/safe-json": "npm:^1.0.2" + events: "npm:^3.3.0" + ws: "npm:^7.5.1" + checksum: 10c0/a710ecc51f8d3ed819ba6d6e53151ef274473aa8746ffdeaffaa3d4c020405bc694b0d179649fc2510a556eb4daf02f4a9e3dacef69ff95f673939bd67be649e + languageName: node + linkType: hard + +"@walletconnect/keyvaluestorage@npm:1.1.1, @walletconnect/keyvaluestorage@npm:^1.1.1": + version: 1.1.1 + resolution: "@walletconnect/keyvaluestorage@npm:1.1.1" + dependencies: + "@walletconnect/safe-json": "npm:^1.0.1" + idb-keyval: "npm:^6.2.1" + unstorage: "npm:^1.9.0" + peerDependencies: + "@react-native-async-storage/async-storage": 1.x + peerDependenciesMeta: + "@react-native-async-storage/async-storage": + optional: true + checksum: 10c0/de2ec39d09ce99370865f7d7235b93c42b3e4fd3406bdbc644329eff7faea2722618aa88ffc4ee7d20b1d6806a8331261b65568187494cbbcceeedbe79dc30e8 + languageName: node + linkType: hard + +"@walletconnect/logger@npm:2.1.2, @walletconnect/logger@npm:^2.0.1": + version: 2.1.2 + resolution: "@walletconnect/logger@npm:2.1.2" + dependencies: + "@walletconnect/safe-json": "npm:^1.0.2" + pino: "npm:7.11.0" + checksum: 10c0/c66e835d33f737f48d6269f151650f6d7bb85bd8b59580fb8116f94d460773820968026e666ddf4a1753f28fceb3c54aae8230a445108a116077cb13a293842f + languageName: node + linkType: hard + +"@walletconnect/modal-core@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-core@npm:2.6.2" + dependencies: + valtio: "npm:1.11.2" + checksum: 10c0/5e3fb21a1fc923ec0d2a3e33cc360e3d56278a211609d5fd4cc4d6e3b4f1acb40b9783fcc771b259b78c7e731af3862def096aa1da2e210e7859729808304c94 + languageName: node + linkType: hard + +"@walletconnect/modal-core@npm:2.7.0": + version: 2.7.0 + resolution: "@walletconnect/modal-core@npm:2.7.0" + dependencies: + valtio: "npm:1.11.2" + checksum: 10c0/84b11735c005e37e661aa0f08b2e8c8098db3b2cacd957c4a73f4d3de11b2d5e04dd97ab970f8d22fc3e8269fea3297b9487e177343bbab8dd69b3b917fb7f60 + languageName: node + linkType: hard + +"@walletconnect/modal-ui@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-ui@npm:2.6.2" + dependencies: + "@walletconnect/modal-core": "npm:2.6.2" + lit: "npm:2.8.0" + motion: "npm:10.16.2" + qrcode: "npm:1.5.3" + checksum: 10c0/5d8f0a2703b9757dfa48ad3e48a40e64608f6a28db31ec93a2f10e942dcc5ee986c03ffdab94018e905836d339131fc928bc14614a94943011868cdddc36a32a + languageName: node + linkType: hard + +"@walletconnect/modal-ui@npm:2.7.0": + version: 2.7.0 + resolution: "@walletconnect/modal-ui@npm:2.7.0" + dependencies: + "@walletconnect/modal-core": "npm:2.7.0" + lit: "npm:2.8.0" + motion: "npm:10.16.2" + qrcode: "npm:1.5.3" + checksum: 10c0/b717f1fc9854b7d14a4364720fce2d44167f547533340704644ed2fdf9d861b3798ffd19a3b51062a366a8bc39f84b9a8bb3dd04e9e33da742192359be00b051 + languageName: node + linkType: hard + +"@walletconnect/modal@npm:*, @walletconnect/modal@npm:2.7.0": + version: 2.7.0 + resolution: "@walletconnect/modal@npm:2.7.0" + dependencies: + "@walletconnect/modal-core": "npm:2.7.0" + "@walletconnect/modal-ui": "npm:2.7.0" + checksum: 10c0/2f3074eebbca41a46e29680dc2565bc762133508774f05db0075a82b0b66ecc8defca40a94ad63669676090a7e3ef671804592b10e91636ab1cdeac014a1eb11 + languageName: node + linkType: hard + +"@walletconnect/modal@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal@npm:2.6.2" + dependencies: + "@walletconnect/modal-core": "npm:2.6.2" + "@walletconnect/modal-ui": "npm:2.6.2" + checksum: 10c0/1cc309f63d061e49fdf7b10d28093d7ef1a47f4624f717f8fd3bf6097ac3b00cea4acc45c50e8bd386d4bcfdf10f4dcba960f7129c557b9dc42ef7d05b970807 + languageName: node + linkType: hard + +"@walletconnect/relay-api@npm:1.0.10": + version: 1.0.10 + resolution: "@walletconnect/relay-api@npm:1.0.10" + dependencies: + "@walletconnect/jsonrpc-types": "npm:^1.0.2" + checksum: 10c0/2709bbe45f60579cd2e1c74b0fd03c36ea409cd8a9117e00a7485428d0c9ba7eb02e525c21e5286db2b6ce563b1d29053b0249c2ed95f8adcf02b11e54f61fcd + languageName: node + linkType: hard + +"@walletconnect/relay-api@npm:1.0.11, @walletconnect/relay-api@npm:^1.0.9": + version: 1.0.11 + resolution: "@walletconnect/relay-api@npm:1.0.11" + dependencies: + "@walletconnect/jsonrpc-types": "npm:^1.0.2" + checksum: 10c0/2595d7e68d3a93e7735e0b6204811762898b0ce1466e811d78be5bcec7ac1cde5381637615a99104099165bf63695da5ef9381d6ded29924a57a71b10712a91d + languageName: node + linkType: hard + +"@walletconnect/relay-auth@npm:1.0.4": + version: 1.0.4 + resolution: "@walletconnect/relay-auth@npm:1.0.4" + dependencies: + "@stablelib/ed25519": "npm:^1.0.2" + "@stablelib/random": "npm:^1.0.1" + "@walletconnect/safe-json": "npm:^1.0.1" + "@walletconnect/time": "npm:^1.0.2" + tslib: "npm:1.14.1" + uint8arrays: "npm:^3.0.0" + checksum: 10c0/e90294ff718c5c1e49751a28916aaac45dd07d694f117052506309eb05b68cc2c72d9b302366e40d79ef952c22bd0bbea731d09633a6663b0ab8e18b4804a832 + languageName: node + linkType: hard + +"@walletconnect/safe-json@npm:1.0.2, @walletconnect/safe-json@npm:^1.0.1, @walletconnect/safe-json@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/safe-json@npm:1.0.2" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/8689072018c1ff7ab58eca67bd6f06b53702738d8183d67bfe6ed220aeac804e41901b8ee0fb14299e83c70093fafb90a90992202d128d53b2832bb01b591752 + languageName: node + linkType: hard + +"@walletconnect/sign-client@npm:*": + version: 2.17.1 + resolution: "@walletconnect/sign-client@npm:2.17.1" + dependencies: + "@walletconnect/core": "npm:2.17.1" + "@walletconnect/events": "npm:1.0.1" + "@walletconnect/heartbeat": "npm:1.2.2" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/time": "npm:1.0.2" + "@walletconnect/types": "npm:2.17.1" + "@walletconnect/utils": "npm:2.17.1" + events: "npm:3.3.0" + checksum: 10c0/a6042c602deda064678c80b1a93a9a819fd97638b61ab82c6056daff7cd4251c225b3c59cdcf40cc5cfd0b2444a573f7f365b7b1255cc590dd569dcb21233692 + languageName: node + linkType: hard + +"@walletconnect/sign-client@npm:2.13.0": + version: 2.13.0 + resolution: "@walletconnect/sign-client@npm:2.13.0" + dependencies: + "@walletconnect/core": "npm:2.13.0" + "@walletconnect/events": "npm:1.0.1" + "@walletconnect/heartbeat": "npm:1.2.2" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/time": "npm:1.0.2" + "@walletconnect/types": "npm:2.13.0" + "@walletconnect/utils": "npm:2.13.0" + events: "npm:3.3.0" + checksum: 10c0/58c702997f719cab9b183d23c53efee561a3a407de24e464e339e350124a71eeccb1bd651f0893ad0f39343ce42a7ff3666bbd28cb8dfc6a0e8d12c94eacc288 + languageName: node + linkType: hard + +"@walletconnect/sign-client@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/sign-client@npm:2.17.0" + dependencies: + "@walletconnect/core": "npm:2.17.0" + "@walletconnect/events": "npm:1.0.1" + "@walletconnect/heartbeat": "npm:1.2.2" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/time": "npm:1.0.2" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" + events: "npm:3.3.0" + checksum: 10c0/48f7d13b3db49584a40dc2653f49fabadd100a324e2213476b8d9e4d6fe0808a08ae14103d2e5b609abff3115197003d8570d606275dbd0f6774d0d49da10c61 + languageName: node + linkType: hard + +"@walletconnect/time@npm:1.0.2, @walletconnect/time@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/time@npm:1.0.2" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/6317f93086e36daa3383cab4a8579c7d0bed665fb0f8e9016575200314e9ba5e61468f66142a7bb5b8489bb4c9250196576d90a60b6b00e0e856b5d0ab6ba474 + languageName: node + linkType: hard + +"@walletconnect/types@npm:*, @walletconnect/types@npm:2.17.1, @walletconnect/types@npm:^2.17.1": + version: 2.17.1 + resolution: "@walletconnect/types@npm:2.17.1" + dependencies: + "@walletconnect/events": "npm:1.0.1" + "@walletconnect/heartbeat": "npm:1.2.2" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/keyvaluestorage": "npm:1.1.1" + "@walletconnect/logger": "npm:2.1.2" + events: "npm:3.3.0" + checksum: 10c0/27ec2f456d3b38d373585013eb3cedbac205f09e5443ab99f48216b592bbe1ba6c35572fb34792cc60d3ceaf32ba1d1d670021ed54cf1699666c9fe386fcac55 + languageName: node + linkType: hard + +"@walletconnect/types@npm:2.12.0": + version: 2.12.0 + resolution: "@walletconnect/types@npm:2.12.0" + dependencies: + "@walletconnect/events": "npm:^1.0.1" + "@walletconnect/heartbeat": "npm:1.2.1" + "@walletconnect/jsonrpc-types": "npm:1.0.3" + "@walletconnect/keyvaluestorage": "npm:^1.1.1" + "@walletconnect/logger": "npm:^2.0.1" + events: "npm:^3.3.0" + checksum: 10c0/31ba3fa2ee6db1728a5bc839de649419dca3b4df9e6f0cd76ec610f875022853ace6c1c05ee81d95692c71b253a816f6309a8af8c752dfab899733a4984aea07 + languageName: node + linkType: hard + +"@walletconnect/types@npm:2.13.0": + version: 2.13.0 + resolution: "@walletconnect/types@npm:2.13.0" + dependencies: + "@walletconnect/events": "npm:1.0.1" + "@walletconnect/heartbeat": "npm:1.2.2" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/keyvaluestorage": "npm:1.1.1" + "@walletconnect/logger": "npm:2.1.2" + events: "npm:3.3.0" + checksum: 10c0/9962284daf92d6b27a009b90b908518b3f028f10f2168ddbc37ad2cb2b20cb0e65d170aa4343e2ea445c519cf79e78264480e2b2c4ab9f974f2c15962db5b012 + languageName: node + linkType: hard + +"@walletconnect/types@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/types@npm:2.17.0" + dependencies: + "@walletconnect/events": "npm:1.0.1" + "@walletconnect/heartbeat": "npm:1.2.2" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/keyvaluestorage": "npm:1.1.1" + "@walletconnect/logger": "npm:2.1.2" + events: "npm:3.3.0" + checksum: 10c0/bdc0c062da1edb4410882d9cfca1bb30eb0afd7caea90d5e7a66eaf15e28380e9ef97635cd5e5a017947f4c814c1f780622b4d8946b11a335d415ae066ec7ade + languageName: node + linkType: hard + +"@walletconnect/universal-provider@npm:2.13.0": + version: 2.13.0 + resolution: "@walletconnect/universal-provider@npm:2.13.0" + dependencies: + "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" + "@walletconnect/jsonrpc-provider": "npm:1.0.14" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/sign-client": "npm:2.13.0" + "@walletconnect/types": "npm:2.13.0" + "@walletconnect/utils": "npm:2.13.0" + events: "npm:3.3.0" + checksum: 10c0/79d14cdce74054859f26f69a17215c59367d961d0f36e7868601ed98030bd0636b3806dd68b76cc66ec4a70d5f6ec107fbe18bb6a1022a5161ea6d71810a0ed9 + languageName: node + linkType: hard + +"@walletconnect/universal-provider@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/universal-provider@npm:2.17.0" + dependencies: + "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" + "@walletconnect/jsonrpc-provider": "npm:1.0.14" + "@walletconnect/jsonrpc-types": "npm:1.0.4" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/logger": "npm:2.1.2" + "@walletconnect/sign-client": "npm:2.17.0" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/utils": "npm:2.17.0" + events: "npm:3.3.0" + checksum: 10c0/7c1afc79054db5add4e937d7adaadb4fc26aecffb5d749d388418fa5d4eb153807ab4de301b642cd80669b4e5c6bcae917f18cf5ce8696d87da8b3705b60d1ec + languageName: node + linkType: hard + +"@walletconnect/utils@npm:2.12.0": + version: 2.12.0 + resolution: "@walletconnect/utils@npm:2.12.0" + dependencies: + "@stablelib/chacha20poly1305": "npm:1.0.1" + "@stablelib/hkdf": "npm:1.0.1" + "@stablelib/random": "npm:^1.0.2" + "@stablelib/sha256": "npm:1.0.1" + "@stablelib/x25519": "npm:^1.0.3" + "@walletconnect/relay-api": "npm:^1.0.9" + "@walletconnect/safe-json": "npm:^1.0.2" + "@walletconnect/time": "npm:^1.0.2" + "@walletconnect/types": "npm:2.12.0" + "@walletconnect/window-getters": "npm:^1.0.1" + "@walletconnect/window-metadata": "npm:^1.0.1" + detect-browser: "npm:5.3.0" + query-string: "npm:7.1.3" + uint8arrays: "npm:^3.1.0" + checksum: 10c0/84522bb2f2db08624288c5e25032b9b7852546685711f4583ae104fdde8a81ece40e9431779dc1ba1fe887885cdf67612bc7d1d316282e45220b26cee849f161 + languageName: node + linkType: hard + +"@walletconnect/utils@npm:2.13.0": + version: 2.13.0 + resolution: "@walletconnect/utils@npm:2.13.0" + dependencies: + "@stablelib/chacha20poly1305": "npm:1.0.1" + "@stablelib/hkdf": "npm:1.0.1" + "@stablelib/random": "npm:1.0.2" + "@stablelib/sha256": "npm:1.0.1" + "@stablelib/x25519": "npm:1.0.3" + "@walletconnect/relay-api": "npm:1.0.10" + "@walletconnect/safe-json": "npm:1.0.2" + "@walletconnect/time": "npm:1.0.2" + "@walletconnect/types": "npm:2.13.0" + "@walletconnect/window-getters": "npm:1.0.1" + "@walletconnect/window-metadata": "npm:1.0.1" + detect-browser: "npm:5.3.0" + query-string: "npm:7.1.3" + uint8arrays: "npm:3.1.0" + checksum: 10c0/2dbdb9ed790492411eb5c4e6b06aa511f6c0204c4ff283ecb5a4d339bb1bf3da033ef3a0c0af66b94df0553676f408222c2feca8c601b0554be2bbfbef43d6ec + languageName: node + linkType: hard + +"@walletconnect/utils@npm:2.17.0": + version: 2.17.0 + resolution: "@walletconnect/utils@npm:2.17.0" + dependencies: + "@stablelib/chacha20poly1305": "npm:1.0.1" + "@stablelib/hkdf": "npm:1.0.1" + "@stablelib/random": "npm:1.0.2" + "@stablelib/sha256": "npm:1.0.1" + "@stablelib/x25519": "npm:1.0.3" + "@walletconnect/relay-api": "npm:1.0.11" + "@walletconnect/relay-auth": "npm:1.0.4" + "@walletconnect/safe-json": "npm:1.0.2" + "@walletconnect/time": "npm:1.0.2" + "@walletconnect/types": "npm:2.17.0" + "@walletconnect/window-getters": "npm:1.0.1" + "@walletconnect/window-metadata": "npm:1.0.1" + detect-browser: "npm:5.3.0" + elliptic: "npm:^6.5.7" + query-string: "npm:7.1.3" + uint8arrays: "npm:3.1.0" + checksum: 10c0/d1da74b2cd7af35f16d735fe408cfc820c611b2709bd00899e4e91b0b0a6dcd8f344f97df34d0ef8cabc121619a40b62118ffa2aa233ddba9863d1ba23480a0c + languageName: node + linkType: hard + +"@walletconnect/utils@npm:2.17.1": + version: 2.17.1 + resolution: "@walletconnect/utils@npm:2.17.1" + dependencies: + "@ethersproject/hash": "npm:5.7.0" + "@ethersproject/transactions": "npm:5.7.0" + "@stablelib/chacha20poly1305": "npm:1.0.1" + "@stablelib/hkdf": "npm:1.0.1" + "@stablelib/random": "npm:1.0.2" + "@stablelib/sha256": "npm:1.0.1" + "@stablelib/x25519": "npm:1.0.3" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/keyvaluestorage": "npm:1.1.1" + "@walletconnect/relay-api": "npm:1.0.11" + "@walletconnect/relay-auth": "npm:1.0.4" + "@walletconnect/safe-json": "npm:1.0.2" + "@walletconnect/time": "npm:1.0.2" + "@walletconnect/types": "npm:2.17.1" + "@walletconnect/window-getters": "npm:1.0.1" + "@walletconnect/window-metadata": "npm:1.0.1" + detect-browser: "npm:5.3.0" + elliptic: "npm:6.5.7" + query-string: "npm:7.1.3" + uint8arrays: "npm:3.1.0" + checksum: 10c0/aba125ce1a1e7c565a82b719117e987b10393013f80b7087261524628086e7b0aa3b6c436be5c4873929de8b9647c52bbff8314567131d6672cde1d550f8081a + languageName: node + linkType: hard + +"@walletconnect/window-getters@npm:1.0.1, @walletconnect/window-getters@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-getters@npm:1.0.1" + dependencies: + tslib: "npm:1.14.1" + checksum: 10c0/c3aedba77aa9274b8277c4189ec992a0a6000377e95656443b3872ca5b5fe77dd91170b1695027fc524dc20362ce89605d277569a0d9a5bedc841cdaf14c95df + languageName: node + linkType: hard + +"@walletconnect/window-metadata@npm:1.0.1, @walletconnect/window-metadata@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-metadata@npm:1.0.1" + dependencies: + "@walletconnect/window-getters": "npm:^1.0.1" + tslib: "npm:1.14.1" + checksum: 10c0/f190e9bed77282d8ba868a4895f4d813e135f9bbecb8dd4aed988ab1b06992f78128ac19d7d073cf41d8a6a74d0c055cd725908ce0a894649fd25443ad934cf4 + languageName: node + linkType: hard + +"@web3modal/common@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/common@npm:5.0.6" + dependencies: + bignumber.js: "npm:9.1.2" + dayjs: "npm:1.11.10" + checksum: 10c0/be31463f1b7521e7657cee30cff628df9ac7ddc75a5f2c6f14cc3982dabbb4ff74c59aec25d68e0c9195e9a9ac2bc0097ce6c1556b04af1988d02cec84944dee + languageName: node + linkType: hard + +"@web3modal/core@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/core@npm:5.0.6" + dependencies: + "@web3modal/common": "npm:5.0.6" + "@web3modal/wallet": "npm:5.0.6" + valtio: "npm:1.11.2" + checksum: 10c0/716414ade33b440fcbf924535f80b58efe857e21200f25099aced7ecdf04ddfb4628d105fcc88937ade9a2d51da70c6266ba6c35525ee7de1c371d4951bfbb6c + languageName: node + linkType: hard + +"@web3modal/polyfills@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/polyfills@npm:5.0.6" + dependencies: + buffer: "npm:6.0.3" + checksum: 10c0/db311057ef8597c5c51716275ec111562ba576d930fd9eb25698fe5d5534d3781da0bf5f59c1eac6ea92b933d78300227b350b56ac374d9fc41d7fac5af67fd3 + languageName: node + linkType: hard + +"@web3modal/scaffold-react@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/scaffold-react@npm:5.0.6" + dependencies: + "@web3modal/scaffold": "npm:5.0.6" + peerDependencies: + react: ">=17" + react-dom: ">=17" + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: 10c0/0c8478614cc47e3e85da3f86913b7bd25e53ee021667b9d8c2e0fedd23d31a7ae794aeaa39f1e08e4e31082c4b4727b26d41bfb26b4fb8930e5da1980316b467 + languageName: node + linkType: hard + +"@web3modal/scaffold-ui@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/scaffold-ui@npm:5.0.6" + dependencies: + "@web3modal/common": "npm:5.0.6" + "@web3modal/core": "npm:5.0.6" + "@web3modal/scaffold-utils": "npm:5.0.6" + "@web3modal/siwe": "npm:5.0.6" + "@web3modal/ui": "npm:5.0.6" + "@web3modal/wallet": "npm:5.0.6" + lit: "npm:3.1.0" + checksum: 10c0/8d4d4aec6459730e1d67d0c7867a782e33afb9ae4b8fb1112f67bbc561982d1a61497a52054e5d893f980ae0f21ffc804cc6aec7b985799feb3d9fbee5dae5db + languageName: node + linkType: hard + +"@web3modal/scaffold-utils@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/scaffold-utils@npm:5.0.6" + dependencies: + "@web3modal/core": "npm:5.0.6" + "@web3modal/polyfills": "npm:5.0.6" + valtio: "npm:1.11.2" + checksum: 10c0/b09aa3473ac1cada80fea2226fe0ac99151e4eda296f63954c48d53c03acb576520459ecc2fb948213847f837364d5900002ab56fcd64f9d2be9ab7367715e59 + languageName: node + linkType: hard + +"@web3modal/scaffold-vue@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/scaffold-vue@npm:5.0.6" + dependencies: + "@web3modal/scaffold": "npm:5.0.6" + peerDependencies: + vue: ">=3" + peerDependenciesMeta: + vue: + optional: true + checksum: 10c0/bf6caa3a07e7e5a8d5d9586bfefdd02b098a0d465ba6ca0ed735619fba4bbe34a7a433c8db7adf163920b772b1166a69f0978e5f0e22a30224404545e4b9f746 + languageName: node + linkType: hard + +"@web3modal/scaffold@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/scaffold@npm:5.0.6" + dependencies: + "@web3modal/common": "npm:5.0.6" + "@web3modal/core": "npm:5.0.6" + "@web3modal/scaffold-ui": "npm:5.0.6" + "@web3modal/scaffold-utils": "npm:5.0.6" + "@web3modal/siwe": "npm:5.0.6" + "@web3modal/ui": "npm:5.0.6" + "@web3modal/wallet": "npm:5.0.6" + lit: "npm:3.1.0" + checksum: 10c0/94e06690710ff7c0c3f574440f41298996c1186400bfff88aab2b04e91149151af15b46461356ebbdcf4ed96e83fe2c07f9ce955dbeb67a96bca2ab71afb81b5 + languageName: node + linkType: hard + +"@web3modal/siwe@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/siwe@npm:5.0.6" + dependencies: + "@walletconnect/utils": "npm:2.12.0" + "@web3modal/core": "npm:5.0.6" + "@web3modal/scaffold-utils": "npm:5.0.6" + lit: "npm:3.1.0" + valtio: "npm:1.11.2" + checksum: 10c0/ab58d356843a84c1cc928746877c4164c8c7b2f1344bea23b5db0c1112932d1c3befe5b965e9cacb545d829160ef24698e1e59f55a6bb472d611141a6df62477 + languageName: node + linkType: hard + +"@web3modal/ui@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/ui@npm:5.0.6" + dependencies: + lit: "npm:3.1.0" + qrcode: "npm:1.5.3" + checksum: 10c0/873ea21ca4b69933b54336ec2bfb6d6253461ac33f13f1de68fdc7209c3ea49e73687afa15b2d8c47b2d01f204e37c8827309ace05de5ec2d3c4dcd23f601f8d + languageName: node + linkType: hard + +"@web3modal/wagmi@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/wagmi@npm:5.0.6" + dependencies: + "@walletconnect/ethereum-provider": "npm:2.13.0" + "@web3modal/polyfills": "npm:5.0.6" + "@web3modal/scaffold": "npm:5.0.6" + "@web3modal/scaffold-react": "npm:5.0.6" + "@web3modal/scaffold-utils": "npm:5.0.6" + "@web3modal/scaffold-vue": "npm:5.0.6" + "@web3modal/siwe": "npm:5.0.6" + peerDependencies: + "@wagmi/connectors": ">=4" + "@wagmi/core": ">=2.0.0" + react: ">=17" + react-dom: ">=17" + viem: ">=2.0.0" + vue: ">=3" + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + vue: + optional: true + checksum: 10c0/2be295ab8b7eb73117c80784e3768f9b975fced441b07b91b2431090ef5ded6242dd83b0e7f616d3a4e0c84b0ad31a1982efeea8223f554bceba57492a32935a + languageName: node + linkType: hard + +"@web3modal/wallet@npm:5.0.6": + version: 5.0.6 + resolution: "@web3modal/wallet@npm:5.0.6" + dependencies: + "@walletconnect/logger": "npm:2.1.2" + "@web3modal/polyfills": "npm:5.0.6" + zod: "npm:3.22.4" + checksum: 10c0/f9c4980127ef66c65568decd29380e5bddca75d774f74ab66cc4dbc7d4d1a30a507b51757b40c2a7be55ced48d7cd16691b48c6dfab1d2a05896f6c0a3e0a014 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/ast@npm:1.11.1" + dependencies: + "@webassemblyjs/helper-numbers": "npm:1.11.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" + checksum: 10c0/6f75b09f17a29e704d2343967c53128cda7c84af2d192a3146de1b53cafaedfe568eca0804bd6c1acc72e1269477ae22d772de1dcf605cdb0adf9768f31d88d7 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.11.5, @webassemblyjs/ast@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/ast@npm:1.12.1" + dependencies: + "@webassemblyjs/helper-numbers": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + checksum: 10c0/ba7f2b96c6e67e249df6156d02c69eb5f1bd18d5005303cdc42accb053bebbbde673826e54db0437c9748e97abd218366a1d13fa46859b23cde611b6b409998c + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" + checksum: 10c0/9644d9f7163d25aa301cf3be246e35cca9c472b70feda0593b1a43f30525c68d70bfb4b7f24624cd8e259579f1dee32ef28670adaeb3ab1314ffb52a25b831d5 + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 10c0/37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" + checksum: 10c0/23e6f24100eb21779cd4dcc7c4231fd511622545a7638b195098bcfee79decb54a7e2b3295a12056c3042af7a5d8d62d4023a9194c9cba0311acb304ea20a292 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: 10c0/a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" + checksum: 10c0/ab662fc94a017538c538836387492567ed9f23fe4485a86de1834d61834e4327c24659830e1ecd2eea7690ce031a148b59c4724873dc5d3c0bdb71605c7d01af + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" + checksum: 10c0/0270724afb4601237410f7fd845ab58ccda1d5456a8783aadfb16eaaf3f2c9610c28e4a5bcb6ad880cde5183c82f7f116d5ccfc2310502439d33f14b6888b48a + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" + dependencies: + "@webassemblyjs/floating-point-hex-parser": "npm:1.11.1" + "@webassemblyjs/helper-api-error": "npm:1.11.1" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/8cc7ced66dad8f968a68fbad551ba50562993cefa1add67b31ca6462bb986f7b21b5d7c6444c05dd39312126e10ac48def025dec6277ce0734665191e05acde7 + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" + checksum: 10c0/f14e2bd836fed1420fe7507919767de16346a013bbac97b6b6794993594f37b5f0591d824866a7b32f47524cef8a4a300e5f914952ff2b0ff28659714400c793 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 10c0/79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" + dependencies: + "@webassemblyjs/ast": "npm:1.11.1" + "@webassemblyjs/helper-buffer": "npm:1.11.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" + "@webassemblyjs/wasm-gen": "npm:1.11.1" + checksum: 10c0/e2da4192a843e96c8bf5156cea23193c9dbe12a1440c9c109d3393828f46753faab75fac78ecfe965aa7988723ad9b0b12f3ca0b9e4de75294980e67515460af + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + checksum: 10c0/0546350724d285ae3c26e6fc444be4c3b5fb824f3be0ec8ceb474179dc3f4430336dd2e36a44b3e3a1a6815960e5eec98cd9b3a8ec66dc53d86daedd3296a6a2 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/ieee754@npm:1.11.1" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10c0/13d6a6ca2e9f35265f10b549cb8354f31a307a7480bbf76c0f4bc8b02e13d5556fb29456cef3815db490effc602c59f98cb0505090ca9e29d7dc61539762a065 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10c0/59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/leb128@npm:1.11.1" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/e505edb5de61f13c6c66c57380ae16e95db9d7c43a41ac132e298426bcead9c90622e3d3035fb63df09d0eeabafd471be35ba583fca72ac2e776ab537dda6883 + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/utf8@npm:1.11.1" + checksum: 10c0/a7c13c7c82d525fe774f51a4fc1da058b0e2c73345eed9e2d6fbeb96ba50c1942daf97e0ff394e7a4d0f26b705f9587cb14681870086d51f02abc78ff6ce3703 + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 10c0/14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" + dependencies: + "@webassemblyjs/ast": "npm:1.11.1" + "@webassemblyjs/helper-buffer": "npm:1.11.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" + "@webassemblyjs/helper-wasm-section": "npm:1.11.1" + "@webassemblyjs/wasm-gen": "npm:1.11.1" + "@webassemblyjs/wasm-opt": "npm:1.11.1" + "@webassemblyjs/wasm-parser": "npm:1.11.1" + "@webassemblyjs/wast-printer": "npm:1.11.1" + checksum: 10c0/10bef22579f96f8c0934aa9fbf6f0d9110563f9c1a510100a84fdfa3dbd9126fdc10bfc12e7ce3ace0ba081e6789eac533c81698faab75859b3a41e97b5ab3bc + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.11.5, @webassemblyjs/wasm-edit@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/helper-wasm-section": "npm:1.12.1" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + "@webassemblyjs/wasm-opt": "npm:1.12.1" + "@webassemblyjs/wasm-parser": "npm:1.12.1" + "@webassemblyjs/wast-printer": "npm:1.12.1" + checksum: 10c0/972f5e6c522890743999e0ed45260aae728098801c6128856b310dd21f1ee63435fc7b518e30e0ba1cdafd0d1e38275829c1e4451c3536a1d9e726e07a5bba0b + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" + dependencies: + "@webassemblyjs/ast": "npm:1.11.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" + "@webassemblyjs/ieee754": "npm:1.11.1" + "@webassemblyjs/leb128": "npm:1.11.1" + "@webassemblyjs/utf8": "npm:1.11.1" + checksum: 10c0/4e49a19e302e19a2a2438e87ae85805acf39a7d93f9ac0ab65620ae395894937ceb762fa328acbe259d2e60d252cbb87a40ec2b4c088f3149be23fa69ddbf855 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/1e257288177af9fa34c69cab94f4d9036ebed611f77f3897c988874e75182eeeec759c79b89a7a49dd24624fc2d3d48d5580b62b67c4a1c9bfbdcd266b281c16 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" + dependencies: + "@webassemblyjs/ast": "npm:1.11.1" + "@webassemblyjs/helper-buffer": "npm:1.11.1" + "@webassemblyjs/wasm-gen": "npm:1.11.1" + "@webassemblyjs/wasm-parser": "npm:1.11.1" + checksum: 10c0/af7fd6bcb942baafda3b8cc1e574062d01c582aaa12d4f0ea62ff8e83ce1317f06a79c16313a3bc98625e1226d0fc49ba90edac18c21a64c75e9cd114306f07a + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + "@webassemblyjs/wasm-parser": "npm:1.12.1" + checksum: 10c0/992a45e1f1871033c36987459436ab4e6430642ca49328e6e32a13de9106fe69ae6c0ac27d7050efd76851e502d11cd1ac0e06b55655dfa889ad82f11a2712fb + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" + dependencies: + "@webassemblyjs/ast": "npm:1.11.1" + "@webassemblyjs/helper-api-error": "npm:1.11.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" + "@webassemblyjs/ieee754": "npm:1.11.1" + "@webassemblyjs/leb128": "npm:1.11.1" + "@webassemblyjs/utf8": "npm:1.11.1" + checksum: 10c0/5a7e8ad36176347f3bc9aee15860a7002b608c181012128ea3e5a1199649d6722e05e029fdf2a73485f2ab3e2f7386b3e0dce46ff9cfd1918417a4ee1151f21e + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.11.5, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/e85cec1acad07e5eb65b92d37c8e6ca09c6ca50d7ca58803a1532b452c7321050a0328c49810c337cc2dfd100c5326a54d5ebd1aa5c339ebe6ef10c250323a0e + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wast-printer@npm:1.11.1" + dependencies: + "@webassemblyjs/ast": "npm:1.11.1" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/cede13c53a176198f949e7f0edf921047c524472b2e4c99edfe829d20e168b4037395479325635b4a3662ea7b4b59be4555ea3bb6050c61b823c68abdb435c74 + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wast-printer@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/39bf746eb7a79aa69953f194943bbc43bebae98bd7cadd4d8bc8c0df470ca6bf9d2b789effaa180e900fab4e2691983c1f7d41571458bd2a26267f2f0c73705a + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: 10c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 10c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 + languageName: node + linkType: hard + +"@yarnpkg/lockfile@npm:1.1.0, @yarnpkg/lockfile@npm:^1.1.0": + version: 1.1.0 + resolution: "@yarnpkg/lockfile@npm:1.1.0" + checksum: 10c0/0bfa50a3d756623d1f3409bc23f225a1d069424dbc77c6fd2f14fb377390cd57ec703dc70286e081c564be9051ead9ba85d81d66a3e68eeb6eb506d4e0c0fbda + languageName: node + linkType: hard + +"@yarnpkg/parsers@npm:^3.0.0-rc.18": + version: 3.0.2 + resolution: "@yarnpkg/parsers@npm:3.0.2" + dependencies: + js-yaml: "npm:^3.10.0" + tslib: "npm:^2.4.0" + checksum: 10c0/a0c340e13129643162423d7e666061c0b39b143bfad3fc5a74c7d92a30fd740f6665d41cd4e61832c20375889d793eea1d1d103cacb39ed68f7acd168add8c53 + languageName: node + linkType: hard + +"@zkochan/js-yaml@npm:0.0.6": + version: 0.0.6 + resolution: "@zkochan/js-yaml@npm:0.0.6" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/5ce27ae75fb1db9657d4065bf6b380b4c0f756feb1bdf42bfde40551a74bcc0ec918f748cbdbd5d95b7107d00bc2f731ee731b5cfe93acb6f7da5639b16aa1f8 + languageName: node + linkType: hard + +"JSONStream@npm:^1.0.4, JSONStream@npm:^1.3.5": + version: 1.3.5 + resolution: "JSONStream@npm:1.3.5" + dependencies: + jsonparse: "npm:^1.2.0" + through: "npm:>=2.2.7 <3" + bin: + JSONStream: ./bin.js + checksum: 10c0/0f54694da32224d57b715385d4a6b668d2117379d1f3223dc758459246cca58fdc4c628b83e8a8883334e454a0a30aa198ede77c788b55537c1844f686a751f2 + languageName: node + linkType: hard + +"abab@npm:^2.0.5, abab@npm:^2.0.6": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 10c0/0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 + languageName: node + linkType: hard + +"abbrev@npm:^1.0.0, abbrev@npm:~1.1.1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"abitype@npm:0.9.8": + version: 0.9.8 + resolution: "abitype@npm:0.9.8" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10c0/ec559461d901d456820faf307e21b2c129583d44f4c68257ed9d0d44eae461114a7049046e715e069bc6fa70c410f644e06bdd2c798ac30d0ada794cd2a6c51e + languageName: node + linkType: hard + +"abitype@npm:1.0.4": + version: 1.0.4 + resolution: "abitype@npm:1.0.4" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10c0/9db138f3706e638ad0e2d24b8449829d687fc00634f6e87b0e673aac5b2d0069b4bd813b5d2408c3ff72065d481c37aea43289202c53596171bc54d8ee4d9964 + languageName: node + linkType: hard + +"abitype@npm:1.0.6": + version: 1.0.6 + resolution: "abitype@npm:1.0.6" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: 10c0/30ca97010bbf34b9aaed401858eeb6bc30419f7ff11eb34adcb243522dd56c9d8a9d3d406aa5d4f60a7c263902f5136043005698e3f073ea882a4922d43a2929 + languageName: node + linkType: hard + +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: "npm:^5.0.0" + checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 + languageName: node + linkType: hard + +"abortcontroller-polyfill@npm:^1.1.9": + version: 1.7.5 + resolution: "abortcontroller-polyfill@npm:1.7.5" + checksum: 10c0/d7a5ab6fda4f9a54f22ddeb233a2564d2f4f857ec17be25fee21a91bb5090bee57c630c454634b5c4b93fc06bd90d592d1f2fc69f77cd28791ac0fe361feb7d2 + languageName: node + linkType: hard + +"abstract-leveldown@npm:~0.12.0, abstract-leveldown@npm:~0.12.1": + version: 0.12.4 + resolution: "abstract-leveldown@npm:0.12.4" + dependencies: + xtend: "npm:~3.0.0" + checksum: 10c0/3d5c50104859980a72136095b865872ed607cb71e93fa99786352a8d9c09a996751480affda38a40de3e49ff8c19226b98a9fec1b1489ff86ce9707455f26f98 + languageName: node + linkType: hard + +"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + languageName: node + linkType: hard + +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" + dependencies: + acorn: "npm:^8.1.0" + acorn-walk: "npm:^8.0.2" + checksum: 10c0/7437f58e92d99292dbebd0e79531af27d706c9f272f31c675d793da6c82d897e75302a8744af13c7f7978a8399840f14a353b60cf21014647f71012982456d2b + languageName: node + linkType: hard + +"acorn-import-assertions@npm:^1.7.6, acorn-import-assertions@npm:^1.9.0": + version: 1.9.0 + resolution: "acorn-import-assertions@npm:1.9.0" + peerDependencies: + acorn: ^8 + checksum: 10c0/3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe + languageName: node + linkType: hard + +"acorn-import-attributes@npm:^1.9.5": + version: 1.9.5 + resolution: "acorn-import-attributes@npm:1.9.5" + peerDependencies: + acorn: ^8 + checksum: 10c0/5926eaaead2326d5a86f322ff1b617b0f698aa61dc719a5baa0e9d955c9885cc71febac3fb5bacff71bbf2c4f9c12db2056883c68c53eb962c048b952e1e013d + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 + languageName: node + linkType: hard + +"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.11.3, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" + bin: + acorn: bin/acorn + checksum: 10c0/51fb26cd678f914e13287e886da2d7021f8c2bc0ccc95e03d3e0447ee278dd3b40b9c57dc222acd5881adcf26f3edc40901a4953403232129e3876793cd17386 + languageName: node + linkType: hard + +"add-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "add-stream@npm:1.0.0" + checksum: 10c0/985014a14e76ca4cb24e0fc58bb1556794cf38c5c8937de335a10584f50a371dc48e1c34a59391c7eb9c1fc908b4b86764df5d2756f701df6ba95d1ca2f63ddc + languageName: node + linkType: hard + +"adjust-sourcemap-loader@npm:^4.0.0": + version: 4.0.0 + resolution: "adjust-sourcemap-loader@npm:4.0.0" + dependencies: + loader-utils: "npm:^2.0.0" + regex-parser: "npm:^2.2.11" + checksum: 10c0/6a6e5bb8b670e4e1238c708f6163e92aa2ad0308fe5913de73c89e4cbf41738ee0bcc5552b94d0b7bf8be435ee49b78c6de8a6db7badd80762051e843c8aa14f + languageName: node + linkType: hard + +"aes-js@npm:3.0.0": + version: 3.0.0 + resolution: "aes-js@npm:3.0.0" + checksum: 10c0/87dd5b2363534b867db7cef8bc85a90c355460783744877b2db7c8be09740aac5750714f9e00902822f692662bda74cdf40e03fbb5214ffec75c2666666288b8 + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: "npm:^4.3.4" + checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" + dependencies: + humanize-ms: "npm:^1.2.1" + checksum: 10c0/394ea19f9710f230722996e156607f48fdf3a345133b0b1823244b7989426c16019a428b56c82d3eabef616e938812981d9009f4792ecc66bd6a59e991c62612 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ajv-formats@npm:2.1.1, ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 + languageName: node + linkType: hard + +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + peerDependencies: + ajv: ^8.8.2 + checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 + languageName: node + linkType: hard + +"ajv@npm:8.12.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: "npm:^3.1.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.2.2" + checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e + languageName: node + linkType: hard + +"ajv@npm:^6.10.0, ajv@npm:^6.12.4, ajv@npm:^6.12.5": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"ajv@npm:^8.0.0, ajv@npm:^8.9.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 + languageName: node + linkType: hard + +"ansi-colors@npm:4.1.3, ansi-colors@npm:^4.1.1": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-escapes@npm:^6.2.0": + version: 6.2.1 + resolution: "ansi-escapes@npm:6.2.1" + checksum: 10c0/a2c6f58b044be5f69662ee17073229b492daa2425a7fd99a665db6c22eab6e4ab42752807def7281c1c7acfed48f87f2362dda892f08c2c437f1b39c6b033103 + languageName: node + linkType: hard + +"ansi-html-community@npm:^0.0.8": + version: 0.0.8 + resolution: "ansi-html-community@npm:0.0.8" + bin: + ansi-html: bin/ansi-html + checksum: 10c0/45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0, ansi-styles@npm:^4.3.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"ansicolors@npm:~0.3.2": + version: 0.3.2 + resolution: "ansicolors@npm:0.3.2" + checksum: 10c0/e202182895e959c5357db6c60791b2abaade99fcc02221da11a581b26a7f83dc084392bc74e4d3875c22f37b3c9ef48842e896e3bfed394ec278194b8003e0ac + languageName: node + linkType: hard + +"any-signal@npm:^3.0.0": + version: 3.0.1 + resolution: "any-signal@npm:3.0.1" + checksum: 10c0/3f7495920883dbd44221e3384acb1f58243133a1a062d59f0dde0817b30774f3126f93c6e4a0e1cb60b715d5c9cfa5546fa32c3f62fedce99bf64278ba4477bf + languageName: node + linkType: hard + +"anymatch@npm:^3.0.3, anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0, aproba@npm:^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 10c0/d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 + languageName: node + linkType: hard + +"arch@npm:^2.2.0": + version: 2.2.0 + resolution: "arch@npm:2.2.0" + checksum: 10c0/4ceaf8d8207817c216ebc4469742052cb0a097bc45d9b7fcd60b7507220da545a28562ab5bdd4dfe87921bb56371a0805da4e10d704e01f93a15f83240f1284c + languageName: node + linkType: hard + +"archy@npm:~1.0.0": + version: 1.0.0 + resolution: "archy@npm:1.0.0" + checksum: 10c0/200c849dd1c304ea9914827b0555e7e1e90982302d574153e28637db1a663c53de62bad96df42d50e8ce7fc18d05e3437d9aa8c4b383803763755f0956c7d308 + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/8373f289ba42e4b5ec713bb585acdac14b5702c75f2a458dc985b9e4fa5762bc5b46b40a21b72418a3ed0cfb5e35bdc317ef1ae132f3035f633d581dd03168c3 + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"argv-formatter@npm:~1.0.0": + version: 1.0.0 + resolution: "argv-formatter@npm:1.0.0" + checksum: 10c0/e5582aef98e6b9a70cfe038a3abf6cdd926714b5ce761830bcbd5ac7be86d17ae583fcc8a2cdf4a2ac0b6024ec100b7312160fcefb1520998f476473da6a941d + languageName: node + linkType: hard + +"aria-query@npm:5.1.3, aria-query@npm:~5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: "npm:^2.0.5" + checksum: 10c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + languageName: node + linkType: hard + +"aria-query@npm:^4.2.2": + version: 4.2.2 + resolution: "aria-query@npm:4.2.2" + dependencies: + "@babel/runtime": "npm:^7.10.2" + "@babel/runtime-corejs3": "npm:^7.10.2" + checksum: 10c0/7e224fbbb4de8210c5d8cbaf0e1a22caa78f2068bf231f4c75302bd77eeba1c3e3b97912080535140be60174720d2ac817e5d6fec18592951b4b6488d4da7cdc + languageName: node + linkType: hard + +"aria-query@npm:^5.0.0": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 + languageName: node + linkType: hard + +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 + languageName: node + linkType: hard + +"array-ify@npm:^1.0.0": + version: 1.0.0 + resolution: "array-ify@npm:1.0.0" + checksum: 10c0/75c9c072faac47bd61779c0c595e912fe660d338504ac70d10e39e1b8a4a0c9c87658703d619b9d1b70d324177ae29dc8d07dda0d0a15d005597bc4c5a59c70c + languageName: node + linkType: hard + +"array-includes@npm:^3.1.4, array-includes@npm:^3.1.5, array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": + version: 3.1.8 + resolution: "array-includes@npm:3.1.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + is-string: "npm:^1.0.7" + checksum: 10c0/5b1004d203e85873b96ddc493f090c9672fd6c80d7a60b798da8a14bff8a670ff95db5aafc9abc14a211943f05220dacf8ea17638ae0af1a6a47b8c0b48ce370 + languageName: node + linkType: hard + +"array-union@npm:^1.0.1": + version: 1.0.2 + resolution: "array-union@npm:1.0.2" + dependencies: + array-uniq: "npm:^1.0.1" + checksum: 10c0/18686767c0cfdae8dc4acf5ac119b0f0eacad82b7fcc0aa62cc41f93c5ad406d494b6a6e53d85e52e8f0349b67a4fec815feeb537e95c02510d747bc9a4157c7 + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"array-union@npm:^3.0.1": + version: 3.0.1 + resolution: "array-union@npm:3.0.1" + checksum: 10c0/b5271d7e5688d2d1932928b271796dbbddc422448557ab05ef6f34a9f84fb645eb855384feec6234bf59c226053a0e21b8a00b0e6cd588874b90a5c13dbeb64e + languageName: node + linkType: hard + +"array-uniq@npm:^1.0.1": + version: 1.0.3 + resolution: "array-uniq@npm:1.0.3" + checksum: 10c0/3acbaf9e6d5faeb1010e2db04ab171b8d265889e46c61762e502979bdc5e55656013726e9a61507de3c82d329a0dc1e8072630a3454b4f2b881cb19ba7fd8aa6 + languageName: node + linkType: hard + +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ddc952b829145ab45411b9d6adcb51a8c17c76bf89c9dd64b52d5dffa65d033da8c076ed2e17091779e83bc892b9848188d7b4b33453c5565e65a92863cb2775 + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlastindex@npm:1.2.5" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/962189487728b034f3134802b421b5f39e42ee2356d13b42d2ddb0e52057ffdcc170b9524867f4f0611a6f638f4c19b31e14606e8bcbda67799e26685b195aa3 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.2.5, array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.1, array.prototype.flatmap@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.1, array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/eb3c4c4fc0381b0bf6dba2ea4d48d367c2827a0d4236a5718d97caaccc6b78f11f4cadf090736e86301d295a6aa4967ed45568f92ced51be8cbbacd9ca410943 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 + languageName: node + linkType: hard + +"arrify@npm:^1.0.1": + version: 1.0.1 + resolution: "arrify@npm:1.0.1" + checksum: 10c0/c35c8d1a81bcd5474c0c57fe3f4bad1a4d46a5fa353cedcff7a54da315df60db71829e69104b859dff96c5d68af46bd2be259fe5e50dc6aa9df3b36bea0383ab + languageName: node + linkType: hard + +"asap@npm:^2.0.0": + version: 2.0.6 + resolution: "asap@npm:2.0.6" + checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d + languageName: node + linkType: hard + +"asn1.js@npm:^4.10.1": + version: 4.10.1 + resolution: "asn1.js@npm:4.10.1" + dependencies: + bn.js: "npm:^4.0.0" + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/afa7f3ab9e31566c80175a75b182e5dba50589dcc738aa485be42bdd787e2a07246a4b034d481861123cbe646a7656f318f4f1cad2e9e5e808a210d5d6feaa88 + languageName: node + linkType: hard + +"asn1@npm:~0.2.3": + version: 0.2.6 + resolution: "asn1@npm:0.2.6" + dependencies: + safer-buffer: "npm:~2.1.0" + checksum: 10c0/00c8a06c37e548762306bcb1488388d2f76c74c36f70c803f0c081a01d3bdf26090fc088cd812afc5e56a6d49e33765d451a5f8a68ab9c2b087eba65d2e980e0 + languageName: node + linkType: hard + +"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": + version: 1.0.0 + resolution: "assert-plus@npm:1.0.0" + checksum: 10c0/b194b9d50c3a8f872ee85ab110784911e696a4d49f7ee6fc5fb63216dedbefd2c55999c70cb2eaeb4cf4a0e0338b44e9ace3627117b5bf0d42460e9132f21b91 + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.7": + version: 0.0.7 + resolution: "ast-types-flow@npm:0.0.7" + checksum: 10c0/f381529f2da535949ba6cceddbdfaa33b4d5105842e147ec63582f560ea9ecc1a08f66457664f3109841d3053641fa8b9fa94ba607f1ea9f6c804fe5dee44a1d + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + languageName: node + linkType: hard + +"async-mutex@npm:^0.2.6": + version: 0.2.6 + resolution: "async-mutex@npm:0.2.6" + dependencies: + tslib: "npm:^2.0.0" + checksum: 10c0/440f1388fdbf2021261ba05952765182124a333681692fdef6af13935c20bfc2017e24e902362f12b29094a77b359ce3131e8dd45b1db42f1d570927ace9e7d9 + languageName: node + linkType: hard + +"async@npm:^3.2.0, async@npm:^3.2.3, async@npm:^3.2.4": + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 10c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef + languageName: node + linkType: hard + +"atob@npm:^2.1.2": + version: 2.1.2 + resolution: "atob@npm:2.1.2" + bin: + atob: bin/atob.js + checksum: 10c0/ada635b519dc0c576bb0b3ca63a73b50eefacf390abb3f062558342a8d68f2db91d0c8db54ce81b0d89de3b0f000de71f3ae7d761fd7d8cc624278fe443d6c7e + languageName: node + linkType: hard + +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: 10c0/e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a + languageName: node + linkType: hard + +"autoprefixer@npm:10.4.14": + version: 10.4.14 + resolution: "autoprefixer@npm:10.4.14" + dependencies: + browserslist: "npm:^4.21.5" + caniuse-lite: "npm:^1.0.30001464" + fraction.js: "npm:^4.2.0" + normalize-range: "npm:^0.1.2" + picocolors: "npm:^1.0.0" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.1.0 + bin: + autoprefixer: bin/autoprefixer + checksum: 10c0/66ce961b86acd2a46e05ac1eece8657b3d9edfd2ee3abddd6cfcb32755e6865409f57acf11fe05990d6f166afda85a603678435916267a09652265cfff7b5706 + languageName: node + linkType: hard + +"autoprefixer@npm:^10.4.9": + version: 10.4.20 + resolution: "autoprefixer@npm:10.4.20" + dependencies: + browserslist: "npm:^4.23.3" + caniuse-lite: "npm:^1.0.30001646" + fraction.js: "npm:^4.3.7" + normalize-range: "npm:^0.1.2" + picocolors: "npm:^1.0.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.1.0 + bin: + autoprefixer: bin/autoprefixer + checksum: 10c0/e1f00978a26e7c5b54ab12036d8c13833fad7222828fc90914771b1263f51b28c7ddb5803049de4e77696cbd02bb25cfc3634e80533025bb26c26aacdf938940 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"await-to-js@npm:3.0.0": + version: 3.0.0 + resolution: "await-to-js@npm:3.0.0" + checksum: 10c0/1e6184cf4090acf24f6573a475901623ec25df494a3e4b9c27eab9cd4a9f1c0bdb8150c41dbb98e719fd2513dbf32ab8cb88d2ac2c2c4c2fa57024e82128a3db + languageName: node + linkType: hard + +"aws-sign2@npm:~0.7.0": + version: 0.7.0 + resolution: "aws-sign2@npm:0.7.0" + checksum: 10c0/021d2cc5547d4d9ef1633e0332e746a6f447997758b8b68d6fb33f290986872d2bff5f0c37d5832f41a7229361f093cd81c40898d96ed153493c0fb5cd8575d2 + languageName: node + linkType: hard + +"aws4@npm:^1.8.0": + version: 1.13.2 + resolution: "aws4@npm:1.13.2" + checksum: 10c0/c993d0d186d699f685d73113733695d648ec7d4b301aba2e2a559d0cd9c1c902308cc52f4095e1396b23fddbc35113644e7f0a6a32753636306e41e3ed6f1e79 + languageName: node + linkType: hard + +"axe-core@npm:^4.10.0, axe-core@npm:^4.4.3": + version: 4.10.0 + resolution: "axe-core@npm:4.10.0" + checksum: 10c0/732c171d48caaace5e784895c4dacb8ca6155e9d98045138ebe3952f78457dd05b92c57d05b41ce2a570aff87dbd0471e8398d2c0f6ebe79617b746c8f658998 + languageName: node + linkType: hard + +"axios@npm:1.1.3": + version: 1.1.3 + resolution: "axios@npm:1.1.3" + dependencies: + follow-redirects: "npm:^1.15.0" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 10c0/78aea19cc15019fb0fb86ec737a9dccb88a8f8e8f00b0e6c5024a76d8df523daf88a7abf8c6593b0cdd9a346806be9f41285d793d8b6653c99877de11245bfa4 + languageName: node + linkType: hard + +"axios@npm:^1.0.0": + version: 1.7.7 + resolution: "axios@npm:1.7.7" + dependencies: + follow-redirects: "npm:^1.15.6" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 10c0/4499efc89e86b0b49ffddc018798de05fab26e3bf57913818266be73279a6418c3ce8f9e934c7d2d707ab8c095e837fc6c90608fb7715b94d357720b5f568af7 + languageName: node + linkType: hard + +"axobject-query@npm:3.1.1": + version: 3.1.1 + resolution: "axobject-query@npm:3.1.1" + dependencies: + deep-equal: "npm:^2.0.5" + checksum: 10c0/fff3175a22fd1f41fceb7ae0cd25f6594a0d7fba28c2335dd904538b80eb4e1040432564a3c643025cd2bb748f68d35aaabffb780b794da97ecfc748810b25ad + languageName: node + linkType: hard + +"axobject-query@npm:^2.2.0": + version: 2.2.0 + resolution: "axobject-query@npm:2.2.0" + checksum: 10c0/75e173c4f8477814a03c46b5864810c0d62d15515e3e1067093d934b77d2dd68704a4e5141e190e305fee9630405c1ea013642f50ed476b27d8d79033c489ce9 + languageName: node + linkType: hard + +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 10c0/c470e4f95008f232eadd755b018cb55f16c03ccf39c027b941cd8820ac6b68707ce5d7368a46756db4256fbc91bb4ead368f84f7fb034b2b7932f082f6dc0775 + languageName: node + linkType: hard + +"babel-jest@npm:29.4.3": + version: 29.4.3 + resolution: "babel-jest@npm:29.4.3" + dependencies: + "@jest/transform": "npm:^29.4.3" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.4.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 10c0/ff6b78b978c2230b3a750feec94103dd4b44613e4ba2931ca177e25edf5c94bb6051f6c3c0ff77ddc6a67e72c98d7b67101273cb11733883b53edd4b85b8dcc5 + languageName: node + linkType: hard + +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": "npm:^29.7.0" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.6.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 10c0/2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 + languageName: node + linkType: hard + +"babel-loader@npm:9.1.2": + version: 9.1.2 + resolution: "babel-loader@npm:9.1.2" + dependencies: + find-cache-dir: "npm:^3.3.2" + schema-utils: "npm:^4.0.0" + peerDependencies: + "@babel/core": ^7.12.0 + webpack: ">=5" + checksum: 10c0/e62ca6af7dec5e9138908ca23f0f29b0865f733d76680b0b0ebc97b1ae18dc6e9cf887c02439ee0634a16eaaef0dc000d78d20c30c348f651a55f50aea5a62ff + languageName: node + linkType: hard + +"babel-loader@npm:^9.1.2": + version: 9.2.1 + resolution: "babel-loader@npm:9.2.1" + dependencies: + find-cache-dir: "npm:^4.0.0" + schema-utils: "npm:^4.0.0" + peerDependencies: + "@babel/core": ^7.12.0 + webpack: ">=5" + checksum: 10c0/efb82faff4c7c27e9c15bb28bf11c73200e61cf365118a9514e8d74dd489d0afc2a0d5aaa62cb4254eefc2ab631579224d95a03fd245410f28ea75e24de54ba4 + languageName: node + linkType: hard + +"babel-plugin-const-enum@npm:^1.0.1": + version: 1.2.0 + resolution: "babel-plugin-const-enum@npm:1.2.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/plugin-syntax-typescript": "npm:^7.3.3" + "@babel/traverse": "npm:^7.16.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/53fef408995add80e615773ff3609169c327bd671990c5ff3b59d275595aad0caa269ac7fdf1b1f691fa13f0d7c03c7fa3d3552cfbf4573912f0eef0bd52f751 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:6.1.1, babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-instrument: "npm:^5.0.4" + test-exclude: "npm:^6.0.0" + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": "npm:^7.3.3" + "@babel/types": "npm:^7.3.3" + "@types/babel__core": "npm:^7.1.14" + "@types/babel__traverse": "npm:^7.0.6" + checksum: 10c0/7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e + languageName: node + linkType: hard + +"babel-plugin-macros@npm:^2.8.0": + version: 2.8.0 + resolution: "babel-plugin-macros@npm:2.8.0" + dependencies: + "@babel/runtime": "npm:^7.7.2" + cosmiconfig: "npm:^6.0.0" + resolve: "npm:^1.12.0" + checksum: 10c0/9a101e2844a800e65662b2a8d0758bdbbe500ae02d68ef6f3466ead7eaa1350e3872b97014b20bf6f3a1a46b3c9613dfac7578af6f6ae6d4eccbd68ad7b6f228 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.10, babel-plugin-polyfill-corejs2@npm:^0.4.3": + version: 0.4.11 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" + dependencies: + "@babel/compat-data": "npm:^7.22.6" + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/b2217bc8d5976cf8142453ed44daabf0b2e0e75518f24eac83b54a8892e87a88f1bd9089daa92fd25df979ecd0acfd29b6bc28c4182c1c46344cee15ef9bce84 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.10.6": + version: 0.10.6 + resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" + core-js-compat: "npm:^3.38.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/3a69220471b07722c2ae6537310bf26b772514e12b601398082965459c838be70a0ca70b0662f0737070654ff6207673391221d48599abb4a2b27765206d9f79 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.8.1": + version: 0.8.7 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.7" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.4.4" + core-js-compat: "npm:^3.33.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/094e40f4ab9f131408202063964d63740609fd4fdb70a5b6332b371761921b540ffbcee7a434c0199b8317dfb2ba4675eef674867215fd3b85e24054607c1501 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.5.0": + version: 0.5.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.5" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/2aab692582082d54e0df9f9373dca1b223e65b4e7e96440160f27ed8803d417a1fa08da550f08aa3820d2010329ca91b68e2b6e9bd7aed51c93d46dfe79629bb + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.1": + version: 0.6.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/bc541037cf7620bc84ddb75a1c0ce3288f90e7d2799c070a53f8a495c8c8ae0316447becb06f958dd25dcce2a2fce855d318ecfa48036a1ddb218d55aa38a744 + languageName: node + linkType: hard + +"babel-plugin-transform-async-to-promises@npm:^0.8.15": + version: 0.8.18 + resolution: "babel-plugin-transform-async-to-promises@npm:0.8.18" + checksum: 10c0/67575a57e1a2cef91ad7273d00687f4cf03891b1398ac79dec906f246926fc8ba84ddcbcda47538356c9d919570381e10a5d2b1b260344478cec86723d284905 + languageName: node + linkType: hard + +"babel-plugin-transform-typescript-metadata@npm:^0.3.1": + version: 0.3.2 + resolution: "babel-plugin-transform-typescript-metadata@npm:0.3.2" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + checksum: 10c0/3a44874122e696416e4bc01a7973f38b07cf6bfd2e366026960a16f85d64ab41b735f408a045cbcfe651dadda52802c9fb992ee8229b1d7731fad56cc4346f57 + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/0b838d4412e3322cb4436f246e24e9c00bebcedfd8f00a2f51489db683bd35406bbd55a700759c28d26959c6e03f84dd6a1426f576f440267c1d7a73c5717281 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.4.3, babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"base-x@npm:^2.0.1": + version: 2.0.6 + resolution: "base-x@npm:2.0.6" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/a82119644a9e9cafeb5e15a1560066df5c786e8cada7207757acb41816feb47f9027c2f72d5a3eee026f67ad05d34e066c54837c038ac80ce7d1171443f508af + languageName: node + linkType: hard + +"base-x@npm:^3.0.2, base-x@npm:^3.0.8": + version: 3.0.10 + resolution: "base-x@npm:3.0.10" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/a13a34b71439ee5381667efa630b3bf640cf17f632c5ba01990483367592e72f247d7fb4f8c6d0e3ff8c0fb7224b3ac682ff5be09b87063a45b3968f0457e563 + languageName: node + linkType: hard + +"base-x@npm:^4.0.0": + version: 4.0.0 + resolution: "base-x@npm:4.0.0" + checksum: 10c0/0cb47c94535144ab138f70bb5aa7e6e03049ead88615316b62457f110fc204f2c3baff5c64a1c1b33aeb068d79a68092c08a765c7ccfa133eee1e70e4c6eb903 + languageName: node + linkType: hard + +"base-x@npm:^5.0.0": + version: 5.0.0 + resolution: "base-x@npm:5.0.0" + checksum: 10c0/8787a582737a77f7c3d14b92de4812843af99fc62da8792f961e13c56958dc545e9ddab55f726d63987dded9eb732dc7de465730fa3db159c0de14a95067c74a + languageName: node + linkType: hard + +"base64-js@npm:^1.2.0, base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + +"batch@npm:0.6.1": + version: 0.6.1 + resolution: "batch@npm:0.6.1" + checksum: 10c0/925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 + languageName: node + linkType: hard + +"bcrypt-pbkdf@npm:^1.0.0": + version: 1.0.2 + resolution: "bcrypt-pbkdf@npm:1.0.2" + dependencies: + tweetnacl: "npm:^0.14.3" + checksum: 10c0/ddfe85230b32df25aeebfdccfbc61d3bc493ace49c884c9c68575de1f5dcf733a5d7de9def3b0f318b786616b8d85bad50a28b1da1750c43e0012c93badcc148 + languageName: node + linkType: hard + +"bech32@npm:1.1.4": + version: 1.1.4 + resolution: "bech32@npm:1.1.4" + checksum: 10c0/5f62ca47b8df99ace9c0e0d8deb36a919d91bf40066700aaa9920a45f86bb10eb56d537d559416fd8703aa0fb60dddb642e58f049701e7291df678b2033e5ee5 + languageName: node + linkType: hard + +"before-after-hook@npm:^2.2.0": + version: 2.2.3 + resolution: "before-after-hook@npm:2.2.3" + checksum: 10c0/0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c + languageName: node + linkType: hard + +"better-sqlite3@npm:11.2.1": + version: 11.2.1 + resolution: "better-sqlite3@npm:11.2.1" + dependencies: + bindings: "npm:^1.5.0" + node-gyp: "npm:latest" + prebuild-install: "npm:^7.1.1" + checksum: 10c0/bec7a28cb4053f07791f842cb9f2bd34ac694d33a61d0e1421f17a5b7c16eb6c187c5f05250e4dc1510adc096ac70bd9ce077dcb5a5c6992d424b9629c9394f7 + languageName: node + linkType: hard + +"big.js@npm:6.2.1": + version: 6.2.1 + resolution: "big.js@npm:6.2.1" + checksum: 10c0/87734c70e6c668f3bc29d84e99b8a97392debbea258d260419c847039d63251fddb8675019c751ceb54ae6fa5f796c5221c4c08526b316149b14ad78dc0d7db1 + languageName: node + linkType: hard + +"big.js@npm:^5.2.2": + version: 5.2.2 + resolution: "big.js@npm:5.2.2" + checksum: 10c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f + languageName: node + linkType: hard + +"bignumber.js@npm:9.1.2": + version: 9.1.2 + resolution: "bignumber.js@npm:9.1.2" + checksum: 10c0/e17786545433f3110b868725c449fa9625366a6e675cd70eb39b60938d6adbd0158cb4b3ad4f306ce817165d37e63f4aa3098ba4110db1d9a3b9f66abfbaf10d + languageName: node + linkType: hard + +"bin-links@npm:^3.0.3": + version: 3.0.3 + resolution: "bin-links@npm:3.0.3" + dependencies: + cmd-shim: "npm:^5.0.0" + mkdirp-infer-owner: "npm:^2.0.0" + npm-normalize-package-bin: "npm:^2.0.0" + read-cmd-shim: "npm:^3.0.0" + rimraf: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.0" + checksum: 10c0/a7f3ea8663213d14134695b42f66994e11f00f0519617537d80cee3b78b7cbb5a627c0d3aafd9d8c748eee9b1af03dbdddedfbf18be738b50a4c11bdd739a160 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0, binary-extensions@npm:^2.2.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"bindings@npm:^1.5.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + languageName: node + linkType: hard + +"bip39-light@npm:^1.0.7": + version: 1.0.7 + resolution: "bip39-light@npm:1.0.7" + dependencies: + create-hash: "npm:^1.1.0" + pbkdf2: "npm:^3.0.9" + checksum: 10c0/44a11f046e5684fb4513be9bc6208ea27e48596df54e1a37707a64d0efa01c8605a0371b906fe4d28a960cb4ab198f8cc7fe49519ff3c2b7ed49e821f55d9850 + languageName: node + linkType: hard + +"bip39@npm:3.0.2": + version: 3.0.2 + resolution: "bip39@npm:3.0.2" + dependencies: + "@types/node": "npm:11.11.6" + create-hash: "npm:^1.1.0" + pbkdf2: "npm:^3.0.9" + randombytes: "npm:^2.0.1" + checksum: 10c0/d7febb07330ae84443ecbd52da759dc45656b5479798a256546b6b9fb5d34cee8342db53248a386055841970b3e0b25293fff697a154e83e7ea0ab91e3b75b1a + languageName: node + linkType: hard + +"bl@npm:^4.0.3, bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + +"bl@npm:^5.0.0": + version: 5.1.0 + resolution: "bl@npm:5.1.0" + dependencies: + buffer: "npm:^6.0.3" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/528a9c3d7d6b87af98c46f10a887654d027c28c503c7f7de87440e643f0056d7a2319a967762b8ec18150c64799d2825a277147a752a0570a7407c0b705b0d01 + languageName: node + linkType: hard + +"bl@npm:~0.8.1": + version: 0.8.2 + resolution: "bl@npm:0.8.2" + dependencies: + readable-stream: "npm:~1.0.26" + checksum: 10c0/aebffeb424001ec2f88ab05af8ee765dd27516ffdb4ecc55f8aa6cca583d56ab947c093ef359d8ed5f37594bf3b9d61703d36d5b43240666d77253fe48348aed + languageName: node + linkType: hard + +"blob-to-it@npm:^2.0.0": + version: 2.0.7 + resolution: "blob-to-it@npm:2.0.7" + dependencies: + browser-readablestream-to-it: "npm:^2.0.0" + checksum: 10c0/a7ae319c098d879ed1590cf1886908392ba5953ac4a323d1368c1450c41e2614267b022c3467d5355d0283119f81a70143da8502ca8f8a407a6d3b6486b3265a + languageName: node + linkType: hard + +"blob-util@npm:^2.0.2": + version: 2.0.2 + resolution: "blob-util@npm:2.0.2" + checksum: 10c0/ed82d587827e5c86be122301a7c250f8364963e9582f72a826255bfbd32f8d69cc10169413d666667bb1c4fc8061329ae89d176ffe46fee8f32080af944ccddc + languageName: node + linkType: hard + +"bluebird@npm:^3.7.2": + version: 3.7.2 + resolution: "bluebird@npm:3.7.2" + checksum: 10c0/680de03adc54ff925eaa6c7bb9a47a0690e8b5de60f4792604aae8ed618c65e6b63a7893b57ca924beaf53eee69c5af4f8314148c08124c550fe1df1add897d2 + languageName: node + linkType: hard + +"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": + version: 4.12.0 + resolution: "bn.js@npm:4.12.0" + checksum: 10c0/9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 + languageName: node + linkType: hard + +"bn.js@npm:^5.2.0, bn.js@npm:^5.2.1": + version: 5.2.1 + resolution: "bn.js@npm:5.2.1" + checksum: 10c0/bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa + languageName: node + linkType: hard + +"body-parser@npm:1.20.3": + version: 1.20.3 + resolution: "body-parser@npm:1.20.3" + dependencies: + bytes: "npm:3.1.2" + content-type: "npm:~1.0.5" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + on-finished: "npm:2.4.1" + qs: "npm:6.13.0" + raw-body: "npm:2.5.2" + type-is: "npm:~1.6.18" + unpipe: "npm:1.0.0" + checksum: 10c0/0a9a93b7518f222885498dcecaad528cf010dd109b071bf471c93def4bfe30958b83e03496eb9c1ad4896db543d999bb62be1a3087294162a88cfa1b42c16310 + languageName: node + linkType: hard + +"bonjour-service@npm:^1.0.11": + version: 1.2.1 + resolution: "bonjour-service@npm:1.2.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + multicast-dns: "npm:^7.2.5" + checksum: 10c0/953cbfc27fc9e36e6f988012993ab2244817d82426603e0390d4715639031396c932b6657b1aa4ec30dbb5fa903d6b2c7f1be3af7a8ba24165c93e987c849730 + languageName: node + linkType: hard + +"boolbase@npm:^1.0.0": + version: 1.0.0 + resolution: "boolbase@npm:1.0.0" + checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf + languageName: node + linkType: hard + +"borsh@npm:*, borsh@npm:2.0.0": + version: 2.0.0 + resolution: "borsh@npm:2.0.0" + checksum: 10c0/59a96dd9c707450862198510fc518dff92ac7f0ed0d228c9b38affd968bb4debec805c6e2afed8ec13efd9fad63fd47f8e6ed420253542a8d10fb59f28fc7d01 + languageName: node + linkType: hard + +"borsh@npm:0.7.0, borsh@npm:^0.7.0": + version: 0.7.0 + resolution: "borsh@npm:0.7.0" + dependencies: + bn.js: "npm:^5.2.0" + bs58: "npm:^4.0.0" + text-encoding-utf-8: "npm:^1.0.2" + checksum: 10c0/513b3e51823d2bf5be77cec27742419d2b0427504825dd7ceb00dedb820f246a4762f04b83d5e3aa39c8e075b3cbaeb7ca3c90bd1cbeecccb4a510575be8c581 + languageName: node + linkType: hard + +"borsh@npm:1.0.0": + version: 1.0.0 + resolution: "borsh@npm:1.0.0" + checksum: 10c0/dbf893af43e5efc6bc9ae2579d5c12514da72437311a30d8c3cfa77c1d51385e0b2a7242f193f7af980e71161ed9db524ab23301752b4401a1b8bfc47f09957b + languageName: node + linkType: hard + +"bottleneck@npm:^2.15.3": + version: 2.19.5 + resolution: "bottleneck@npm:2.19.5" + checksum: 10c0/b0f72e45b2e0f56a21ba720183f16bef8e693452fb0495d997fa354e42904353a94bd8fd429868e6751bc85e54b6755190519eed5a0ae0a94a5185209ae7c6d0 + languageName: node + linkType: hard + +"bowser@npm:^2.9.0": + version: 2.11.0 + resolution: "bowser@npm:2.11.0" + checksum: 10c0/04efeecc7927a9ec33c667fa0965dea19f4ac60b3fea60793c2e6cf06c1dcd2f7ae1dbc656f450c5f50783b1c75cf9dc173ba6f3b7db2feee01f8c4b793e1bd3 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"brorand@npm:^1.0.1, brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 + languageName: node + linkType: hard + +"browser-headers@npm:^0.4.1": + version: 0.4.1 + resolution: "browser-headers@npm:0.4.1" + checksum: 10c0/3b08864bb955b295ab3dd6ab775c7798096c2e85486571803b4070ec484de83ccceebe531a8b00d5daf4463fada5e7ca18cd1a71cc1ee0dfdbab705332318cef + languageName: node + linkType: hard + +"browser-readablestream-to-it@npm:^1.0.0": + version: 1.0.3 + resolution: "browser-readablestream-to-it@npm:1.0.3" + checksum: 10c0/921564b2224c0504f0de362548c3f84e149588835956564661795e2b8e0659b8a17018a22681c13eeb8e1a24f3335a7a8cc9269322a38617b9bc21a52652c8f5 + languageName: node + linkType: hard + +"browser-readablestream-to-it@npm:^2.0.0": + version: 2.0.7 + resolution: "browser-readablestream-to-it@npm:2.0.7" + checksum: 10c0/baec0bd2c64da4d10f64aad5dcef22d5b324875bc76f3421295e7f9e2b491f3c1f41ebe594d2d73adc52a0e33b5632c15f379eeba60740f651146b5ea9d41b14 + languageName: node + linkType: hard + +"browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": + version: 1.2.0 + resolution: "browserify-aes@npm:1.2.0" + dependencies: + buffer-xor: "npm:^1.0.3" + cipher-base: "npm:^1.0.0" + create-hash: "npm:^1.1.0" + evp_bytestokey: "npm:^1.0.3" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 + languageName: node + linkType: hard + +"browserify-cipher@npm:^1.0.0": + version: 1.0.1 + resolution: "browserify-cipher@npm:1.0.1" + dependencies: + browserify-aes: "npm:^1.0.4" + browserify-des: "npm:^1.0.0" + evp_bytestokey: "npm:^1.0.0" + checksum: 10c0/aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d + languageName: node + linkType: hard + +"browserify-des@npm:^1.0.0": + version: 1.0.2 + resolution: "browserify-des@npm:1.0.2" + dependencies: + cipher-base: "npm:^1.0.1" + des.js: "npm:^1.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d + languageName: node + linkType: hard + +"browserify-fs@npm:1.0.0": + version: 1.0.0 + resolution: "browserify-fs@npm:1.0.0" + dependencies: + level-filesystem: "npm:^1.0.1" + level-js: "npm:^2.1.3" + levelup: "npm:^0.18.2" + checksum: 10c0/500ad06370eb275a9826bf9cfc03080501f483bb5ee21653ef7a302c50cfcf660dd79920207da5c4b0de4edabdbd32646f95dbed768060910f8448fbe8ee2245 + languageName: node + linkType: hard + +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": + version: 4.1.1 + resolution: "browserify-rsa@npm:4.1.1" + dependencies: + bn.js: "npm:^5.2.1" + randombytes: "npm:^2.1.0" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/b650ee1192e3d7f3d779edc06dd96ed8720362e72ac310c367b9d7fe35f7e8dbb983c1829142b2b3215458be8bf17c38adc7224920843024ed8cf39e19c513c0 + languageName: node + linkType: hard + +"browserify-sign@npm:^4.0.0": + version: 4.2.3 + resolution: "browserify-sign@npm:4.2.3" + dependencies: + bn.js: "npm:^5.2.1" + browserify-rsa: "npm:^4.1.0" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + elliptic: "npm:^6.5.5" + hash-base: "npm:~3.0" + inherits: "npm:^2.0.4" + parse-asn1: "npm:^5.1.7" + readable-stream: "npm:^2.3.8" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/30c0eba3f5970a20866a4d3fbba2c5bd1928cd24f47faf995f913f1499214c6f3be14bb4d6ec1ab5c6cafb1eca9cb76ba1c2e1c04ed018370634d4e659c77216 + languageName: node + linkType: hard + +"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.21.5, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0, browserslist@npm:^4.6.6": + version: 4.24.0 + resolution: "browserslist@npm:4.24.0" + dependencies: + caniuse-lite: "npm:^1.0.30001663" + electron-to-chromium: "npm:^1.5.28" + node-releases: "npm:^2.0.18" + update-browserslist-db: "npm:^1.1.0" + bin: + browserslist: cli.js + checksum: 10c0/95e76ad522753c4c470427f6e3c8a4bb5478ff448841e22b3d3e53f89ecaf17b6984666d6c7e715c370f1e7fa0cf684f42e34e554236a8b2fab38ea76b9e4c52 + languageName: node + linkType: hard + +"bs-logger@npm:0.x, bs-logger@npm:^0.2.6": + version: 0.2.6 + resolution: "bs-logger@npm:0.2.6" + dependencies: + fast-json-stable-stringify: "npm:2.x" + checksum: 10c0/80e89aaaed4b68e3374ce936f2eb097456a0dddbf11f75238dbd53140b1e39259f0d248a5089ed456f1158984f22191c3658d54a713982f676709fbe1a6fa5a0 + languageName: node + linkType: hard + +"bs58@npm:*": + version: 6.0.0 + resolution: "bs58@npm:6.0.0" + dependencies: + base-x: "npm:^5.0.0" + checksum: 10c0/61910839746625ee4f69369f80e2634e2123726caaa1da6b3bcefcf7efcd9bdca86603360fed9664ffdabe0038c51e542c02581c72ca8d44f60329fe1a6bc8f4 + languageName: node + linkType: hard + +"bs58@npm:4.0.0": + version: 4.0.0 + resolution: "bs58@npm:4.0.0" + dependencies: + base-x: "npm:^2.0.1" + checksum: 10c0/76f0695f71245ce14b0675f8382387fc63d8de184680e98114df98e125c6b7cd970a86deeb8a22d921157b243dbee42e6100c0c95aec79d90ccb1984b5950cf1 + languageName: node + linkType: hard + +"bs58@npm:5.0.0": + version: 5.0.0 + resolution: "bs58@npm:5.0.0" + dependencies: + base-x: "npm:^4.0.0" + checksum: 10c0/0d1b05630b11db48039421b5975cb2636ae0a42c62f770eec257b2e5c7d94cb5f015f440785f3ec50870a6e9b1132b35bd0a17c7223655b22229f24b2a3491d1 + languageName: node + linkType: hard + +"bs58@npm:^4.0.0, bs58@npm:^4.0.1": + version: 4.0.1 + resolution: "bs58@npm:4.0.1" + dependencies: + base-x: "npm:^3.0.2" + checksum: 10c0/613a1b1441e754279a0e3f44d1faeb8c8e838feef81e550efe174ff021dd2e08a4c9ae5805b52dfdde79f97b5c0918c78dd24a0eb726c4a94365f0984a0ffc65 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + +"buffer-crc32@npm:~0.2.3": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: 10c0/cb0a8ddf5cf4f766466db63279e47761eb825693eeba6a5a95ee4ec8cb8f81ede70aa7f9d8aeec083e781d47154290eb5d4d26b3f7a465ec57fb9e7d59c47150 + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + +"buffer-xor@npm:^1.0.3": + version: 1.0.3 + resolution: "buffer-xor@npm:1.0.3" + checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c + languageName: node + linkType: hard + +"buffer@npm:6.0.3, buffer@npm:^6.0.1, buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + +"buffer@npm:^5.5.0, buffer@npm:^5.6.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + +"bufferutil@npm:^4.0.8": + version: 4.0.8 + resolution: "bufferutil@npm:4.0.8" + dependencies: + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10c0/36cdc5b53a38d9f61f89fdbe62029a2ebcd020599862253fefebe31566155726df9ff961f41b8c97b02b4c12b391ef97faf94e2383392654cf8f0ed68f76e47c + languageName: node + linkType: hard + +"builtin-modules@npm:^3.3.0": + version: 3.3.0 + resolution: "builtin-modules@npm:3.3.0" + checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a + languageName: node + linkType: hard + +"builtin-status-codes@npm:^3.0.0": + version: 3.0.0 + resolution: "builtin-status-codes@npm:3.0.0" + checksum: 10c0/c37bbba11a34c4431e56bd681b175512e99147defbe2358318d8152b3a01df7bf25e0305873947e5b350073d5ef41a364a22b37e48f1fb6d2fe6d5286a0f348c + languageName: node + linkType: hard + +"builtins@npm:^5.0.0": + version: 5.1.0 + resolution: "builtins@npm:5.1.0" + dependencies: + semver: "npm:^7.0.0" + checksum: 10c0/3c32fe5bd7ed4ff7dbd6fb14bcb9d7eaa7e967327f1899cd336f8625d3f46fceead0a53528f1e332aeaee757034ebb307cb2f1a37af2b86a3c5ad4845d01c0c8 + languageName: node + linkType: hard + +"busboy@npm:1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: "npm:^1.1.0" + checksum: 10c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f + languageName: node + linkType: hard + +"bytes@npm:3.0.0": + version: 3.0.0 + resolution: "bytes@npm:3.0.0" + checksum: 10c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 + languageName: node + linkType: hard + +"bytes@npm:3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e + languageName: node + linkType: hard + +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 10c0/4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10 + languageName: node + linkType: hard + +"cacache@npm:17.1.3": + version: 17.1.3 + resolution: "cacache@npm:17.1.3" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^7.7.1" + minipass: "npm:^5.0.0" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/fcb0843c8e152b0e1440328508a2c0d6435c431198155e31daa591b348a1739b089ce2a72a4528690ed10a2bf086c180ee4980e2116457131b4c8a6e65e10976 + languageName: node + linkType: hard + +"cacache@npm:^15.0.5": + version: 15.3.0 + resolution: "cacache@npm:15.3.0" + dependencies: + "@npmcli/fs": "npm:^1.0.0" + "@npmcli/move-file": "npm:^1.0.1" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + glob: "npm:^7.1.4" + infer-owner: "npm:^1.0.4" + lru-cache: "npm:^6.0.0" + minipass: "npm:^3.1.1" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.2" + mkdirp: "npm:^1.0.3" + p-map: "npm:^4.0.0" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^3.0.2" + ssri: "npm:^8.0.1" + tar: "npm:^6.0.2" + unique-filename: "npm:^1.1.1" + checksum: 10c0/886fcc0acc4f6fd5cd142d373d8276267bc6d655d7c4ce60726fbbec10854de3395ee19bbf9e7e73308cdca9fdad0ad55060ff3bd16c6d4165c5b8d21515e1d8 + languageName: node + linkType: hard + +"cacache@npm:^16.0.0, cacache@npm:^16.1.0, cacache@npm:^16.1.3": + version: 16.1.3 + resolution: "cacache@npm:16.1.3" + dependencies: + "@npmcli/fs": "npm:^2.1.0" + "@npmcli/move-file": "npm:^2.0.0" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.1.0" + glob: "npm:^8.0.1" + infer-owner: "npm:^1.0.4" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + mkdirp: "npm:^1.0.4" + p-map: "npm:^4.0.0" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^3.0.2" + ssri: "npm:^9.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^2.0.0" + checksum: 10c0/cdf6836e1c457d2a5616abcaf5d8240c0346b1f5bd6fdb8866b9d84b6dff0b54e973226dc11e0d099f35394213d24860d1989c8358d2a41b39eb912b3000e749 + languageName: node + linkType: hard + +"cacache@npm:^17.0.0": + version: 17.1.4 + resolution: "cacache@npm:17.1.4" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^7.7.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/21749dcf98c61dd570b179e51573b076c92e3f6c82166d37444242db66b92b1e6c6dc11c6059c027ac7bdef5479b513855059299cc11cda8212c49b0f69a3662 + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.4 + resolution: "cacache@npm:18.0.4" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/6c055bafed9de4f3dcc64ac3dc7dd24e863210902b7c470eb9ce55a806309b3efff78033e3d8b4f7dcc5d467f2db43c6a2857aaaf26f0094b8a351d44c42179f + languageName: node + linkType: hard + +"cachedir@npm:^2.3.0": + version: 2.4.0 + resolution: "cachedir@npm:2.4.0" + checksum: 10c0/76bff9009f2c446cd3777a4aede99af634a89670a67012b8041f65e951d3d36cefe8940341ea80c72219ee9913fa1f6146824cd9dfe9874a4bded728af7e6d76 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: "npm:^3.1.2" + tslib: "npm:^2.0.3" + checksum: 10c0/bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a + languageName: node + linkType: hard + +"camelcase-keys@npm:^6.2.2": + version: 6.2.2 + resolution: "camelcase-keys@npm:6.2.2" + dependencies: + camelcase: "npm:^5.3.1" + map-obj: "npm:^4.0.0" + quick-lru: "npm:^4.0.1" + checksum: 10c0/bf1a28348c0f285c6c6f68fb98a9d088d3c0269fed0cdff3ea680d5a42df8a067b4de374e7a33e619eb9d5266a448fe66c2dd1f8e0c9209ebc348632882a3526 + languageName: node + linkType: hard + +"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + +"caniuse-api@npm:^3.0.0": + version: 3.0.0 + resolution: "caniuse-api@npm:3.0.0" + dependencies: + browserslist: "npm:^4.0.0" + caniuse-lite: "npm:^1.0.0" + lodash.memoize: "npm:^4.1.2" + lodash.uniq: "npm:^4.5.0" + checksum: 10c0/60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001464, caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001663": + version: 1.0.30001667 + resolution: "caniuse-lite@npm:1.0.30001667" + checksum: 10c0/6bc8555a47603e1e76eaef9b185d6fdeeca7d9c20a283f7c32c971eb1b52ea3a80e6ec086920f088f06abe619240f1023a2d3a08b5b1f2f11df1475695e9f71c + languageName: node + linkType: hard + +"capital-case@npm:^1.0.4": + version: 1.0.4 + resolution: "capital-case@npm:1.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/6a034af73401f6e55d91ea35c190bbf8bda21714d4ea8bb8f1799311d123410a80f0875db4e3236dc3f97d74231ff4bf1c8783f2be13d7733c7d990c57387281 + languageName: node + linkType: hard + +"cardinal@npm:^2.1.1": + version: 2.1.1 + resolution: "cardinal@npm:2.1.1" + dependencies: + ansicolors: "npm:~0.3.2" + redeyed: "npm:~2.1.0" + bin: + cdl: ./bin/cdl.js + checksum: 10c0/0051d0e64c0e1dff480c1aace4c018c48ecca44030533257af3f023107ccdeb061925603af6d73710f0345b0ae0eb57e5241d181d9b5fdb595d45c5418161675 + languageName: node + linkType: hard + +"caseless@npm:~0.12.0": + version: 0.12.0 + resolution: "caseless@npm:0.12.0" + checksum: 10c0/ccf64bcb6c0232cdc5b7bd91ddd06e23a4b541f138336d4725233ac538041fb2f29c2e86c3c4a7a61ef990b665348db23a047060b9414c3a6603e9fa61ad4626 + languageName: node + linkType: hard + +"catharsis@npm:^0.9.0": + version: 0.9.0 + resolution: "catharsis@npm:0.9.0" + dependencies: + lodash: "npm:^4.17.15" + checksum: 10c0/9ac03ca48154ac63cfdb6c1645481d9d04f3c3e0dea131debf3116a0c12aa47e8864be7dcf770932c46d75bdd844a99f0c116c234e57232ad1f427751498e7ed + languageName: node + linkType: hard + +"cborg@npm:^1.5.4, cborg@npm:^1.6.0": + version: 1.10.2 + resolution: "cborg@npm:1.10.2" + bin: + cborg: cli.js + checksum: 10c0/e8c2ff47db7161600a2f5bf95a1871cce9f207d918d518b028fc181852169c19110e000e09d3e1cfc0515ad03246216edd00185e5204a15e191cf211cecc4b89 + languageName: node + linkType: hard "cbw-sdk@npm:@coinbase/wallet-sdk@3.9.3": - version "3.9.3" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.9.3.tgz#daf10cb0c85d0363315b7270cb3f02bedc408aab" - integrity sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw== - dependencies: - bn.js "^5.2.1" - buffer "^6.0.3" - clsx "^1.2.1" - eth-block-tracker "^7.1.0" - eth-json-rpc-filters "^6.0.0" - eventemitter3 "^5.0.1" - keccak "^3.0.3" - preact "^10.16.0" - sha.js "^2.4.11" - -chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - 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.3.2, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.0.0, chalk@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -change-case@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" - integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== - 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" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -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== - -"charenc@>= 0.0.1": - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== - -check-more-types@^2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" - integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== - -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" - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.3, chokidar@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - 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.1: - 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== - -chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" - integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cidr-regex@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-3.1.1.tgz#ba1972c57c66f61875f18fd7dd487469770b571d" - integrity sha512-RBqYd32aDwbCMFJRL6wHOlDNYJsPNTt8vC82ErHF5vKt8QQzxm1FrkW8s/R5pVrXMf17sba09Uoy91PKiddAsw== - dependencies: - ip-regex "^4.1.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -citty@^0.1.5, citty@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.6.tgz#0f7904da1ed4625e1a9ea7e0fa780981aab7c5e4" - integrity sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ== - dependencies: - consola "^3.2.3" - -cjs-module-lexer@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" - integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-columns@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646" - integrity sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ== - dependencies: - string-width "^4.2.3" - strip-ansi "^6.0.1" - -cli-cursor@3.1.0, 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-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" - integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== - dependencies: - restore-cursor "^4.0.0" - -cli-spinners@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-spinners@^2.5.0, cli-spinners@^2.6.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cli-table3@^0.6.2, cli-table3@^0.6.3, cli-table3@~0.6.1: - version "0.6.5" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" - integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - -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== - -client-only@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" - integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== - -clipboardy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-4.0.0.tgz#e73ced93a76d19dd379ebf1f297565426dffdca1" - integrity sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w== - dependencies: - execa "^8.0.1" - is-wsl "^3.1.0" - is64bit "^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-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.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== - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -clone@~0.1.9: - version "0.1.19" - resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" - integrity sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw== - -clsx@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - -cmd-shim@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" - integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== - dependencies: - mkdirp-infer-owner "^2.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -code-block-writer@^11.0.0: - version "11.0.3" - resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-11.0.3.tgz#9eec2993edfb79bfae845fbc093758c0a0b73b76" - integrity sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -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== - -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -colord@^2.9.1, colord@^2.9.3: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.16: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -columnify@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - -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@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" - integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - -commander@^7.0.0, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -common-ancestor-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" - integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -common-tags@^1.8.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -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== - -concat-stream@^1.4.4: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat-with-sourcemaps@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" - integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== - dependencies: - source-map "^0.6.1" - -confbox@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" - integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== - -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" - -confusing-browser-globals@^1.0.9: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -consola@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" - integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== - -console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -constant-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" - integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case "^2.0.2" - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -conventional-changelog-angular@^5.0.0: - version "5.0.13" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-angular@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" - integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== - dependencies: - compare-func "^2.0.0" - -conventional-changelog-atom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-4.0.0.tgz#291fd1583517d4e7131dba779ad9fa238359daa1" - integrity sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw== - -conventional-changelog-codemirror@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-4.0.0.tgz#3421aced2377552229cef454447aa06e2a319516" - integrity sha512-hQSojc/5imn1GJK3A75m9hEZZhc3urojA5gMpnar4JHmgLnuM3CUIARPpEk86glEKr3c54Po3WV/vCaO/U8g3Q== - -conventional-changelog-conventionalcommits@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz#aa5da0f1b2543094889e8cf7616ebe1a8f5c70d5" - integrity sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w== - dependencies: - compare-func "^2.0.0" - -conventional-changelog-core@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-7.0.0.tgz#d8879ebb8692cd1fa8126c209e1b3af34d94e113" - integrity sha512-UYgaB1F/COt7VFjlYKVE/9tTzfU3VUq47r6iWf6lM5T7TlOxr0thI63ojQueRLIpVbrtHK4Ffw+yQGduw2Bhdg== - dependencies: - "@hutson/parse-repository-url" "^5.0.0" - add-stream "^1.0.0" - conventional-changelog-writer "^7.0.0" - conventional-commits-parser "^5.0.0" - git-raw-commits "^4.0.0" - git-semver-tags "^7.0.0" - hosted-git-info "^7.0.0" - normalize-package-data "^6.0.0" - read-pkg "^8.0.0" - read-pkg-up "^10.0.0" - -conventional-changelog-ember@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-4.0.0.tgz#d90409083a840cd8955bf8257b17498fc539db6a" - integrity sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA== - -conventional-changelog-eslint@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-5.0.0.tgz#d7f428f787f079b3ce08ccc76ed46d4b1852f41b" - integrity sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA== - -conventional-changelog-express@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-4.0.0.tgz#5f50086bae1cd9887959af1fa3d5244fd1f55974" - integrity sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw== - -conventional-changelog-jquery@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-5.0.0.tgz#d56e5cc9158b5035669ac6e0f773c3e593621887" - integrity sha512-slLjlXLRNa/icMI3+uGLQbtrgEny3RgITeCxevJB+p05ExiTgHACP5p3XiMKzjBn80n+Rzr83XMYfRInEtCPPw== - -conventional-changelog-jshint@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-4.0.0.tgz#95aec357f9122b214671381ef94124287208ece9" - integrity sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg== - dependencies: - compare-func "^2.0.0" - -conventional-changelog-preset-loader@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-4.1.0.tgz#996bc40d516471c5bf8248fdc30222563b9bcfe6" - integrity sha512-HozQjJicZTuRhCRTq4rZbefaiCzRM2pr6u2NL3XhrmQm4RMnDXfESU6JKu/pnKwx5xtdkYfNCsbhN5exhiKGJA== - -conventional-changelog-writer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" - integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== - dependencies: - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.7" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" - -conventional-changelog-writer@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz#e64ef74fa8e773cab4124af217f3f02b29eb0a9c" - integrity sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA== - dependencies: - conventional-commits-filter "^4.0.0" - handlebars "^4.7.7" - json-stringify-safe "^5.0.1" - meow "^12.0.1" - semver "^7.5.2" - split2 "^4.0.0" - -conventional-changelog@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-5.1.0.tgz#04b36a5ad0518e0323e9d629e3b86e34f7abb7eb" - integrity sha512-aWyE/P39wGYRPllcCEZDxTVEmhyLzTc9XA6z6rVfkuCD2UBnhV/sgSOKbQrEG5z9mEZJjnopjgQooTKxEg8mAg== - dependencies: - conventional-changelog-angular "^7.0.0" - conventional-changelog-atom "^4.0.0" - conventional-changelog-codemirror "^4.0.0" - conventional-changelog-conventionalcommits "^7.0.2" - conventional-changelog-core "^7.0.0" - conventional-changelog-ember "^4.0.0" - conventional-changelog-eslint "^5.0.0" - conventional-changelog-express "^4.0.0" - conventional-changelog-jquery "^5.0.0" - conventional-changelog-jshint "^4.0.0" - conventional-changelog-preset-loader "^4.1.0" - -conventional-commits-filter@^2.0.0, conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-filter@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz#845d713e48dc7d1520b84ec182e2773c10c7bf7f" - integrity sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A== - -conventional-commits-parser@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" - integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -conventional-commits-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#57f3594b81ad54d40c1b4280f04554df28627d9a" - integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== - dependencies: - JSONStream "^1.3.5" - is-text-path "^2.0.0" - meow "^12.0.1" - split2 "^4.0.0" - -conventional-recommended-bump@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-9.0.0.tgz#2910b08b10e6c705301335ab916e7438eba5907f" - integrity sha512-HR1yD0G5HgYAu6K0wJjLd7QGRK8MQDqqj6Tn1n/ja1dFwBCE6QmV+iSgQ5F7hkx7OUR/8bHpxJqYtXj2f/opPQ== - dependencies: - conventional-changelog-preset-loader "^4.1.0" - conventional-commits-filter "^4.0.0" - conventional-commits-parser "^5.0.0" - git-raw-commits "^4.0.0" - git-semver-tags "^7.0.0" - meow "^12.0.1" - -convert-source-map@^1.5.1, 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== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-es@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.1.0.tgz#68f8d9f48aeb5a534f3896f80e792760d3d20def" - integrity sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - -copy-anything@^2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" - integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== - dependencies: - is-what "^3.14.1" - -copy-to-clipboard@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" - integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== - dependencies: - toggle-selection "^1.0.6" - -copy-webpack-plugin@11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" - integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== - dependencies: - fast-glob "^3.2.11" - glob-parent "^6.0.1" - globby "^13.1.1" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - -copy-webpack-plugin@^10.2.4: - version "10.2.4" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" - integrity sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg== - dependencies: - fast-glob "^3.2.7" - glob-parent "^6.0.1" - globby "^12.0.2" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - -core-js-compat@^3.30.2, core-js-compat@^3.33.1: - version "3.37.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" - integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== - dependencies: - browserslist "^4.23.0" - -core-js-compat@^3.31.0, core-js-compat@^3.36.1, core-js-compat@^3.37.1: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" - integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== - dependencies: - browserslist "^4.23.0" - -core-js-pure@^3.30.2, core-js-pure@^3.8.1: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.37.1.tgz#2b4b34281f54db06c9a9a5bd60105046900553bd" - integrity sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA== - -core-js@3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== - -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== - -corser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" - integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - 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" - -cosmiconfig@^8.1.3: - version "8.3.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" - integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - dependencies: - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - path-type "^4.0.0" - -cosmiconfig@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" - integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== - dependencies: - env-paths "^2.2.1" - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@1.1.7, create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -critters@0.0.20: - version "0.0.20" - resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.20.tgz#08ddb961550ab7b3a59370537e4f01df208f7646" - integrity sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw== - dependencies: - chalk "^4.1.0" - css-select "^5.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.2" - htmlparser2 "^8.0.2" - postcss "^8.4.23" - pretty-bytes "^5.3.0" - -cross-fetch@^3.1.4: - version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" - integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== - dependencies: - node-fetch "^2.6.12" - -cross-fetch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" - integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== - dependencies: - node-fetch "^2.6.12" - -cross-spawn@^7.0.0, 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" - -crossws@^0.2.0, crossws@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.2.4.tgz#82a8b518bff1018ab1d21ced9e35ffbe1681ad03" - integrity sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg== - -"crypt@>= 0.0.1": - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-declaration-sorter@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" - integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== - -css-declaration-sorter@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" - integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== - -css-loader@6.8.1: - version "6.8.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" - integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.21" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.3" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.3.8" - -css-loader@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.1.2.tgz#64671541c6efe06b0e22e750503106bdd86880f8" - integrity sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.33" - postcss-modules-extract-imports "^3.1.0" - postcss-modules-local-by-default "^4.0.5" - postcss-modules-scope "^3.2.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.5.4" - -css-loader@^6.4.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" - integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.33" - postcss-modules-extract-imports "^3.1.0" - postcss-modules-local-by-default "^4.0.5" - postcss-modules-scope "^3.2.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.5.4" - -css-minimizer-webpack-plugin@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== - dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-minimizer-webpack-plugin@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" - integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - cssnano "^6.0.1" - jest-worker "^29.4.3" - postcss "^8.4.24" - schema-utils "^4.0.1" - serialize-javascript "^6.0.1" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-tree@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" - integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== - dependencies: - mdn-data "2.0.30" - source-map-js "^1.0.1" - -css-tree@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" - integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== - dependencies: - mdn-data "2.0.28" - source-map-js "^1.0.1" - -css-what@^6.0.1, css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-preset-default@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#adf4b89b975aa775f2750c89dbaf199bbd9da35e" - integrity sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== - dependencies: - browserslist "^4.23.0" - css-declaration-sorter "^7.2.0" - cssnano-utils "^4.0.2" - postcss-calc "^9.0.1" - postcss-colormin "^6.1.0" - postcss-convert-values "^6.1.0" - postcss-discard-comments "^6.0.2" - postcss-discard-duplicates "^6.0.3" - postcss-discard-empty "^6.0.3" - postcss-discard-overridden "^6.0.2" - postcss-merge-longhand "^6.0.5" - postcss-merge-rules "^6.1.1" - postcss-minify-font-values "^6.1.0" - postcss-minify-gradients "^6.0.3" - postcss-minify-params "^6.1.0" - postcss-minify-selectors "^6.0.4" - postcss-normalize-charset "^6.0.2" - postcss-normalize-display-values "^6.0.2" - postcss-normalize-positions "^6.0.2" - postcss-normalize-repeat-style "^6.0.2" - postcss-normalize-string "^6.0.2" - postcss-normalize-timing-functions "^6.0.2" - postcss-normalize-unicode "^6.1.0" - postcss-normalize-url "^6.0.2" - postcss-normalize-whitespace "^6.0.2" - postcss-ordered-values "^6.0.2" - postcss-reduce-initial "^6.1.0" - postcss-reduce-transforms "^6.0.2" - postcss-svgo "^6.0.3" - postcss-unique-selectors "^6.0.4" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano-utils@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.2.tgz#56f61c126cd0f11f2eef1596239d730d9fceff3c" - integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== - -cssnano@^5.0.1, cssnano@^5.0.6: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== - dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" - -cssnano@^6.0.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.1.2.tgz#4bd19e505bd37ee7cf0dc902d3d869f6d79c66b8" - integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== - dependencies: - cssnano-preset-default "^6.1.2" - lilconfig "^3.1.1" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -csso@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" - integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== - dependencies: - css-tree "~2.2.0" - -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@^3.0.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -cypress@12.2.0: - version "12.2.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.2.0.tgz#86ddc1ecfffadf57a8689e211cfb4437735f4e92" - integrity sha512-kvl95ri95KK8mAy++tEU/wUgzAOMiIciZSL97LQvnOinb532m7dGvwN0mDSIGbOd71RREtmT9o4h088RjK5pKw== - dependencies: - "@cypress/request" "^2.88.10" - "@cypress/xvfb" "^1.2.4" - "@types/node" "^14.14.31" - "@types/sinonjs__fake-timers" "8.1.1" - "@types/sizzle" "^2.3.2" - arch "^2.2.0" - blob-util "^2.0.2" - bluebird "^3.7.2" - buffer "^5.6.0" - cachedir "^2.3.0" - chalk "^4.1.0" - check-more-types "^2.24.0" - cli-cursor "^3.1.0" - cli-table3 "~0.6.1" - commander "^5.1.0" - common-tags "^1.8.0" - dayjs "^1.10.4" - debug "^4.3.2" - enquirer "^2.3.6" - eventemitter2 "6.4.7" - execa "4.1.0" - executable "^4.1.1" - extract-zip "2.0.1" - figures "^3.2.0" - fs-extra "^9.1.0" - getos "^3.2.1" - is-ci "^3.0.0" - is-installed-globally "~0.4.0" - lazy-ass "^1.6.0" - listr2 "^3.8.3" - lodash "^4.17.21" - log-symbols "^4.0.0" - minimist "^1.2.6" - ospath "^1.2.2" - pretty-bytes "^5.6.0" - proxy-from-env "1.0.0" - request-progress "^3.0.0" - semver "^7.3.2" - supports-color "^8.1.1" - tmp "~0.2.1" - untildify "^4.0.0" - yauzl "^2.10.0" - -dag-jose@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-3.0.1.tgz#0c474eff3e70ad522b5d42e848786358c11ea7c6" - integrity sha512-HUdzCqM4ukT168fgFl1IgOVf5J9I7WSbvBovOhOsQWIJZ+LGGVEd/Dg4f1ZirslsBZzLEeXU8LBuPpf4he5CKg== - dependencies: - "@ipld/dag-cbor" "^8.0.0" - multiformats "^10.0.1" - -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== - -dargs@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-8.1.0.tgz#a34859ea509cbce45485e5aa356fef70bfcc7272" - integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== - -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" - -data-urls@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" - integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== - dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -date-fns@^2.29.3: - version "2.30.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" - integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - dependencies: - "@babel/runtime" "^7.21.0" - -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - -dayjs@1.11.10: - version "1.11.10" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== - -dayjs@^1.10.4: - version "1.11.11" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e" - integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== - -debug@2.6.9, 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@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - -debug@^3.1.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" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@~4.3.1, debug@~4.3.2: - 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" - -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== - -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, 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== - -decimal.js@^10.4.2: - version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - -deep-equal@^2.0.5: - version "2.2.3" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" - integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.5" - es-get-iterator "^1.1.3" - get-intrinsic "^1.2.2" - is-arguments "^1.1.1" - is-array-buffer "^3.0.2" - is-date-object "^1.0.5" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - isarray "^2.0.5" - object-is "^1.1.5" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - side-channel "^1.0.4" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.13" - -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== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -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" - -deferred-leveldown@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4" - integrity sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng== - dependencies: - abstract-leveldown "~0.12.1" - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -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.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -defu@^6.1.3, defu@^6.1.4: - version "6.1.4" - resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" - integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== - -del@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -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== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -deprecation@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destr@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.3.tgz#7f9e97cb3d16dbdca7be52aca1644ce402cfe449" - integrity sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-browser@5.3.0, detect-browser@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" - integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== - -detect-indent@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - -detect-libc@^2.0.0, detect-libc@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -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== - -detect-port@^1.5.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.6.1.tgz#45e4073997c5f292b957cb678fb0bb8ed4250a67" - integrity sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q== - dependencies: - address "^1.0.1" - debug "4" - -dezalgo@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" - integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== - dependencies: - asap "^2.0.0" - wrappy "1" - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diff@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dijkstrajs@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" - integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== - -dir-glob@^3.0.0, 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" - -dns-over-http-resolver@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-2.1.3.tgz#bb7f2e10cc18d960339a6e30e21b8c1d99be7b38" - integrity sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA== - dependencies: - debug "^4.3.1" - native-fetch "^4.0.2" - receptacle "^1.3.2" - undici "^5.12.0" - -dns-packet@^5.2.2, dns-packet@^5.6.1: - version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" - integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -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-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.16" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" - integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domexception@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" - integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== - dependencies: - webidl-conversions "^7.0.0" - -domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -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@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" - integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== - -dotenv@~10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - -duplexer2@~0.1.0: - 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" - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" - integrity sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA== - dependencies: - end-of-stream "^1.4.1" - inherits "^2.0.3" - readable-stream "^3.1.1" - stream-shift "^1.0.2" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -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" - -eciesjs@^0.3.15: - version "0.3.18" - resolved "https://registry.yarnpkg.com/eciesjs/-/eciesjs-0.3.18.tgz#67b5d73a8466e40a45bbc2f2a3177e71e9c0643d" - integrity sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw== - dependencies: - "@types/secp256k1" "^4.0.4" - futoin-hkdf "^1.5.3" - secp256k1 "^5.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.0.0, ejs@^3.1.7: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - -electron-fetch@^1.7.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" - integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== - dependencies: - encoding "^0.1.13" - -electron-to-chromium@^1.4.431: - version "1.4.440" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.440.tgz#d3b1eeb36b717eb479a240c0406ac1fa67901762" - integrity sha512-r6dCgNpRhPwiWlxbHzZQ/d9swfPaEJGi8ekqRBwQYaR3WmA5VkqQfBWSDDjuJU1ntO+W9tHx8OHV/96Q8e0dVw== - -electron-to-chromium@^1.4.820: - version "1.4.823" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.823.tgz#38587f7aa55bed14930f04091dfc65c39a3d8bd7" - integrity sha512-4h+oPeAiGQOHFyUJOqpoEcPj/xxlicxBzOErVeYVMMmAiXUXsGpsFd0QXBMaUUbnD8hhSfLf9uw+MlsoIA7j5w== - -elliptic@6.5.4, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -elliptic@^6.5.3, elliptic@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" - integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -email-addresses@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-5.0.0.tgz#7ae9e7f58eef7d5e3e2c2c2d3ea49b78dc854fa6" - integrity sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw== - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -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== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -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== - -encoding@^0.1.12, encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0, end-of-stream@^1.4.0, end-of-stream@^1.4.1: - 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" - -engine.io-client@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.5.3.tgz#4cf6fa24845029b238f83c628916d9149c399bc5" - integrity sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" - engine.io-parser "~5.2.1" - ws "~8.11.0" - xmlhttprequest-ssl "~2.0.0" - -engine.io-parser@~5.2.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" - integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== - -enhanced-resolve@^5.0.0, enhanced-resolve@^5.12.0, enhanced-resolve@^5.17.0, enhanced-resolve@^5.7.0: - version "5.17.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" - integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enhanced-resolve@^5.10.0: - version "5.17.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" - integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enhanced-resolve@^5.14.1, enhanced-resolve@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.6: - version "2.4.1" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" - integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== - dependencies: - ansi-colors "^4.1.1" - strip-ansi "^6.0.1" - -enquirer@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - -env-ci@^5.0.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-5.5.0.tgz#43364e3554d261a586dec707bc32be81112b545f" - integrity sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A== - dependencies: - execa "^5.0.0" - fromentries "^1.3.2" - java-properties "^1.0.0" - -env-paths@^2.2.0, env-paths@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envinfo@^7.7.3: - version "7.12.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.12.0.tgz#b56723b39c2053d67ea5714f026d05d4f5cc7acd" - integrity sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg== - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -err-code@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" - integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== - -errno@^0.1.1, errno@~0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1, error-ex@^1.3.2: - 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" - -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - -es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== - dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" - is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.2.1, es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-get-iterator@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" - integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - is-arguments "^1.1.1" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.7" - isarray "^2.0.5" - stop-iteration-iterator "^1.0.0" - -es-iterator-helpers@^1.0.19: - version "1.0.19" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" - integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.3" - es-errors "^1.3.0" - es-set-tostringtag "^2.0.3" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - globalthis "^1.0.3" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - iterator.prototype "^1.1.2" - safe-array-concat "^1.1.2" - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -es-module-lexer@^1.1.1, es-module-lexer@^1.2.1: - version "1.5.4" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" - integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== - dependencies: - get-intrinsic "^1.2.4" - has-tostringtag "^1.0.2" - hasown "^2.0.1" - -es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -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" - -esbuild-wasm@0.17.19: - version "0.17.19" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.17.19.tgz#c528495c5363c34a4671fa55404e2b0ba85566ba" - integrity sha512-X9UQEMJMZXwlGCfqcBmJ1jEa+KrLfd+gCBypO/TSzo5hZvbVwFqpxj1YCuX54ptTF75wxmrgorR4RL40AKtLVg== - -esbuild-wasm@>=0.13.8: - version "0.23.0" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.23.0.tgz#7b09c7bc669b702b440aeb3d5c9210f96766e1b2" - integrity sha512-6jP8UmWy6R6TUUV8bMuC3ZyZ6lZKI56x0tkxyCIqWwRRJ/DgeQKneh/Oid5EoGoPFLrGNkz47ZEtWAYuiY/u9g== - -esbuild@0.17.19, esbuild@^0.17.5: - version "0.17.19" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== - optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" - -esbuild@>=0.13.8: - version "0.23.0" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.0.tgz#de06002d48424d9fdb7eb52dbe8e95927f852599" - integrity sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.23.0" - "@esbuild/android-arm" "0.23.0" - "@esbuild/android-arm64" "0.23.0" - "@esbuild/android-x64" "0.23.0" - "@esbuild/darwin-arm64" "0.23.0" - "@esbuild/darwin-x64" "0.23.0" - "@esbuild/freebsd-arm64" "0.23.0" - "@esbuild/freebsd-x64" "0.23.0" - "@esbuild/linux-arm" "0.23.0" - "@esbuild/linux-arm64" "0.23.0" - "@esbuild/linux-ia32" "0.23.0" - "@esbuild/linux-loong64" "0.23.0" - "@esbuild/linux-mips64el" "0.23.0" - "@esbuild/linux-ppc64" "0.23.0" - "@esbuild/linux-riscv64" "0.23.0" - "@esbuild/linux-s390x" "0.23.0" - "@esbuild/linux-x64" "0.23.0" - "@esbuild/netbsd-x64" "0.23.0" - "@esbuild/openbsd-arm64" "0.23.0" - "@esbuild/openbsd-x64" "0.23.0" - "@esbuild/sunos-x64" "0.23.0" - "@esbuild/win32-arm64" "0.23.0" - "@esbuild/win32-ia32" "0.23.0" - "@esbuild/win32-x64" "0.23.0" - -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^1.0.2, 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== - -escodegen@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-next@14.2.5: - version "14.2.5" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.5.tgz#cdd43d89047eb7391ba25445d5855b4600b6adb9" - integrity sha512-zogs9zlOiZ7ka+wgUnmcM0KBEDjo4Jis7kxN1jvC0N4wynQ2MIx/KBkg4mVF63J5EK4W0QMCn7xO3vNisjaAoA== - dependencies: - "@next/eslint-plugin-next" "14.2.5" - "@rushstack/eslint-patch" "^1.3.3" - "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0" - eslint-import-resolver-node "^0.3.6" - eslint-import-resolver-typescript "^3.5.2" - eslint-plugin-import "^2.28.1" - eslint-plugin-jsx-a11y "^6.7.1" - eslint-plugin-react "^7.33.2" - eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" - -eslint-config-prettier@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz#4ef1eaf97afe5176e6a75ddfb57c335121abc5a6" - integrity sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw== - -eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-import-resolver-typescript@^3.5.2: - version "3.6.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" - integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== - dependencies: - debug "^4.3.4" - enhanced-resolve "^5.12.0" - eslint-module-utils "^2.7.4" - fast-glob "^3.3.1" - get-tsconfig "^4.5.0" - is-core-module "^2.11.0" - is-glob "^4.0.3" - -eslint-module-utils@^2.7.3, eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" - integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== - dependencies: - debug "^3.2.7" - -eslint-plugin-cypress@2.10.3: - version "2.10.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.10.3.tgz#82eba7e014954149d590402eecd0d4e147cc7f14" - integrity sha512-CvFeoCquShfO8gHNIKA1VpUTz78WtknMebLemBd1lRbcmJNjwpqCqpQYUG/XVja8GjdX/e2TJXYa+EUBxehtUg== - dependencies: - globals "^11.12.0" - -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-import@^2.28.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.15.0" - -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-jsx-a11y@^6.7.1: - version "6.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#67ab8ff460d4d3d6a0b4a570e9c1670a0a8245c8" - integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g== - dependencies: - aria-query "~5.1.3" - array-includes "^3.1.8" - array.prototype.flatmap "^1.3.2" - ast-types-flow "^0.0.8" - axe-core "^4.9.1" - axobject-query "~3.1.1" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.19" - hasown "^2.0.2" - jsx-ast-utils "^3.3.5" - language-tags "^1.0.9" - minimatch "^3.1.2" - object.fromentries "^2.0.8" - safe-regex-test "^1.0.3" - string.prototype.includes "^2.0.0" - -eslint-plugin-prettier@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@4.6.2, "eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": - version "4.6.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" - integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== - -eslint-plugin-react@7.31.11: - version "7.31.11" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8" - integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - 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.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.8" - -eslint-plugin-react@^7.33.2: - version "7.34.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.4.tgz#1f0dc313a0937db7ce15fd1f6c3d77e70f3e02fb" - integrity sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA== - dependencies: - array-includes "^3.1.8" - array.prototype.findlast "^1.2.5" - array.prototype.flatmap "^1.3.2" - array.prototype.toreversed "^1.1.2" - array.prototype.tosorted "^1.1.4" - doctrine "^2.1.0" - es-iterator-helpers "^1.0.19" - estraverse "^5.3.0" - hasown "^2.0.2" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.8" - object.fromentries "^2.0.8" - object.values "^1.2.0" - prop-types "^15.8.1" - resolve "^2.0.0-next.5" - semver "^6.3.1" - string.prototype.matchall "^4.0.11" - string.prototype.repeat "^1.0.0" - -eslint-scope@5.1.1, 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.0.0, eslint-scope@^7.1.1: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - 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, eslint-visitor-keys@^3.4.1: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@8.15.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.15.0.tgz#fea1d55a7062da48d82600d2e0974c55612a11e9" - integrity sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA== - dependencies: - "@eslint/eslintrc" "^1.2.3" - "@humanwhocodes/config-array" "^0.9.2" - 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.3.2" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^9.3.2, espree@^9.4.0: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== - 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== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -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== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eth-block-tracker@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-7.1.0.tgz#dfc16085c6817cc30caabba381deb8d204c1c766" - integrity sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg== - dependencies: - "@metamask/eth-json-rpc-provider" "^1.0.0" - "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^5.0.1" - json-rpc-random-id "^1.0.1" - pify "^3.0.0" - -eth-json-rpc-filters@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-6.0.1.tgz#0b3e370f017f5c6f58d3e7bd0756d8099ed85c56" - integrity sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig== - dependencies: - "@metamask/safe-event-emitter" "^3.0.0" - async-mutex "^0.2.6" - eth-query "^2.1.2" - json-rpc-engine "^6.1.0" - pify "^5.0.0" - -eth-query@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== - dependencies: - json-rpc-random-id "^1.0.0" - xtend "^4.0.1" - -eth-rpc-errors@^4.0.2, eth-rpc-errors@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" - integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== - dependencies: - fast-safe-stringify "^2.0.6" - -ethereum-cryptography@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" - integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== - dependencies: - "@noble/curves" "1.3.0" - "@noble/hashes" "1.3.3" - "@scure/bip32" "1.3.3" - "@scure/bip39" "1.2.2" - -ethers@5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter-asyncresource@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz#734ff2e44bf448e627f7748f905d6bdd57bdb65b" - integrity sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ== - -eventemitter2@6.4.7: - version "6.4.7" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" - integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== - -eventemitter2@^6.4.7: - version "6.4.9" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" - integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== - -eventemitter3@5.0.1, eventemitter3@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -eventemitter3@^4.0.0, eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@3.3.0, events@^3.2.0, events@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -execa@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" - -executable@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" - integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== - dependencies: - pify "^2.2.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -exponential-backoff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" - integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== - -express@^4.17.3, express@^4.18.1: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -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== - -extension-port-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/extension-port-stream/-/extension-port-stream-3.0.0.tgz#00a7185fe2322708a36ed24843c81bd754925fef" - integrity sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw== - dependencies: - readable-stream "^3.6.2 || ^4.4.2" - webextension-polyfill ">=0.10.0 <1.0" - -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-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-fifo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" - integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== - -fast-glob@3.2.12: - 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-glob@3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - 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-glob@^3.0.3, fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - 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.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.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-redact@^3.0.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4" - integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A== - -fast-safe-stringify@^2.0.6: - 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== - -fastest-levenshtein@^1.0.12: - version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - 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" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.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.2.0, figures@^3.0.0, figures@^3.2.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" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - 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-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -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.4: - 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" - -filename-reserved-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" - integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== - -filenamify@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-4.3.0.tgz#62391cb58f02b09971c9d4f9d63b3cf9aba03106" - integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg== - dependencies: - filename-reserved-regex "^2.0.0" - strip-outer "^1.0.1" - trim-repeated "^1.0.0" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^3.3.1, find-cache-dir@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - -find-up@^4.0.0, 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" - -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - -find-versions@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965" - integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== - dependencies: - semver-regex "^3.1.2" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -follow-redirects@^1.0.0, follow-redirects@^1.15.0, follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreach@~2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" - integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== - -foreground-child@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" - integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -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== - -fork-ts-checker-webpack-plugin@7.2.13: - version "7.2.13" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz#51ffd6a2f96f03ab64b92f8aedf305dbf3dee0f1" - integrity sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg== - dependencies: - "@babel/code-frame" "^7.16.7" - chalk "^4.1.2" - chokidar "^3.5.3" - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - fs-extra "^10.0.0" - memfs "^3.4.1" - minimatch "^3.0.4" - node-abort-controller "^3.0.1" - schema-utils "^3.1.1" - semver "^7.3.5" - tapable "^2.2.1" - -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" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fraction.js@^4.2.0, fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -from2@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fromentries@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^10.0.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@^11.0.0, fs-extra@^11.1.0, fs-extra@^11.1.1: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.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.1.0: - 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@^2.0.0, fs-minipass@^2.1.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-minipass@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" - integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== - dependencies: - minipass "^7.0.3" - -fs-monkey@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" - integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== - -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, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -functions-have-names@^1.2.3: - 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== - -futoin-hkdf@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/futoin-hkdf/-/futoin-hkdf-1.5.3.tgz#6c8024f2e1429da086d4e18289ef2239ad33ee35" - integrity sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ== - -fwd-stream@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fwd-stream/-/fwd-stream-1.0.4.tgz#ed281cabed46feecf921ee32dc4c50b372ac7cfa" - integrity sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg== - dependencies: - readable-stream "~1.0.26-4" - -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - integrity sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ== - dependencies: - is-property "^1.0.0" - -generic-names@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" - integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== - dependencies: - loader-utils "^3.2.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.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-iterator@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" - integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-port-please@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.2.tgz#502795e56217128e4183025c89a48c71652f4e49" - integrity sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ== - -get-port@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" - integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== - -get-stream@^5.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-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - dependencies: - call-bind "^1.0.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - -get-tsconfig@^4.5.0: - version "4.7.5" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.5.tgz#5e012498579e9a6947511ed0cd403272c7acbbaf" - integrity sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw== - dependencies: - resolve-pkg-maps "^1.0.0" - -getos@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" - integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== - dependencies: - async "^3.2.0" - -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" - -gh-pages@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-6.1.1.tgz#e80af927a081cb480657fde5a0b87ea2e77d6c74" - integrity sha512-upnohfjBwN5hBP9w2dPE7HO5JJTHzSGMV1JrLrHvNuqmjoYHg6TBrCcnEoorjG/e0ejbuvnwyKMdTyM40PEByw== - dependencies: - async "^3.2.4" - commander "^11.0.0" - email-addresses "^5.0.0" - filenamify "^4.3.0" - find-cache-dir "^3.3.1" - fs-extra "^11.1.1" - globby "^6.1.0" - -git-log-parser@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/git-log-parser/-/git-log-parser-1.2.1.tgz#44355787b37af7560dcc4ddc01cb53b5d139cc28" - integrity sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ== - dependencies: - argv-formatter "~1.0.0" - spawn-error-forwarder "~1.0.0" - split2 "~1.0.0" - stream-combiner2 "~1.1.1" - through2 "~2.0.0" - traverse "0.6.8" - -git-raw-commits@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-4.0.0.tgz#b212fd2bff9726d27c1283a1157e829490593285" - integrity sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ== - dependencies: - dargs "^8.0.0" - meow "^12.0.1" - split2 "^4.0.0" - -git-semver-tags@^7.0.0, git-semver-tags@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-7.0.1.tgz#74426e7d7710e5a263655e78b4c651eed804d63e" - integrity sha512-NY0ZHjJzyyNXHTDZmj+GG7PyuAKtMsyWSwh07CR2hOZFa+/yoTsXci/nF2obzL8UDhakFNkD9gNdt/Ed+cxh2Q== - dependencies: - meow "^12.0.1" - semver "^7.5.2" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== - -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-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@10.3.10: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - 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@^10.2.2: - version "10.4.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, 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" - -glob@^8.0.1: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -glob@^9.2.0: - version "9.3.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" - integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== - dependencies: - fs.realpath "^1.0.0" - minimatch "^8.0.2" - minipass "^4.2.4" - path-scurry "^1.6.1" - -global-dirs@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" - integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== - dependencies: - ini "2.0.0" - -globals@^11.1.0, globals@^11.12.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.19.0, globals@^13.2.0, globals@^13.6.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" - integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== - dependencies: - define-properties "^1.2.1" - gopd "^1.0.1" - -globby@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" - integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - -globby@^11.0.0, globby@^11.0.1, 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@^12.0.2: - version "12.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" - integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== - dependencies: - array-union "^3.0.1" - dir-glob "^3.0.1" - fast-glob "^3.2.7" - ignore "^5.1.9" - merge2 "^1.4.1" - slash "^4.0.0" - -globby@^13.1.1: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" - ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@4.2.10: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -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== - -h3@^1.10.2, h3@^1.11.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/h3/-/h3-1.12.0.tgz#9d7f05f08a997d263e484b02436cb027df3026d8" - integrity sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA== - dependencies: - cookie-es "^1.1.0" - crossws "^0.2.4" - defu "^6.1.4" - destr "^2.0.3" - iron-webcrypto "^1.1.1" - ohash "^1.1.3" - radix3 "^1.1.2" - ufo "^1.5.3" - uncrypto "^0.1.3" - unenv "^1.9.0" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -handlebars@^4.7.7: - version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - -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, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1, has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -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, has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -has-unicode@^2.0.1: - 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.4" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" - integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-base@~3.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hashlru@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/hashlru/-/hashlru-2.3.0.tgz#5dc15928b3f6961a2056416bb3a4910216fdfb51" - integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== - -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hdr-histogram-js@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz#0b860534655722b6e3f3e7dca7b78867cf43dcb5" - integrity sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g== - dependencies: - "@assemblyscript/loader" "^0.10.1" - base64-js "^1.2.0" - pako "^1.0.3" - -hdr-histogram-percentiles-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c" - integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw== - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -header-case@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" - integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== - dependencies: - capital-case "^1.0.4" - tslib "^2.0.3" - -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== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hook-std@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c" - integrity sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g== - -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.0.0, hosted-git-info@^4.0.1: - 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" - -hosted-git-info@^5.0.0, hosted-git-info@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" - integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== - dependencies: - lru-cache "^7.5.1" - -hosted-git-info@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" - integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== - dependencies: - lru-cache "^7.5.1" - -hosted-git-info@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" - integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== - dependencies: - lru-cache "^10.0.1" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-encoding-sniffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" - integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== - dependencies: - whatwg-encoding "^2.0.0" - -html-entities@^2.1.0, html-entities@^2.3.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" - integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -htmlnano@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.1.1.tgz#9ba84e145cd8b7cd4c783d9ab8ff46a80e79b59b" - integrity sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw== - dependencies: - cosmiconfig "^9.0.0" - posthtml "^0.16.5" - timsort "^0.3.0" - -htmlparser2@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" - integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.2" - domutils "^2.8.0" - entities "^3.0.1" - -htmlparser2@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -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@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -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-proxy-agent@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" - integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== - dependencies: - agent-base "^7.1.0" - debug "^4.3.4" - -http-proxy-middleware@^2.0.3, http-proxy-middleware@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-server@^14.1.0: - version "14.1.1" - resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" - integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== - dependencies: - basic-auth "^2.0.1" - chalk "^4.1.2" - corser "^2.0.1" - he "^1.2.0" - html-encoding-sniffer "^3.0.0" - http-proxy "^1.18.1" - mime "^1.6.0" - minimist "^1.2.6" - opener "^1.5.1" - portfinder "^1.0.28" - secure-compare "3.0.1" - union "~0.5.0" - url-join "^4.0.1" - -http-shutdown@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f" - integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== - -http-signature@~1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" - integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== - dependencies: - assert-plus "^1.0.0" - jsprim "^2.0.2" - sshpk "^1.14.1" - -https-browserify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== - -https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: - 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" - -https-proxy-agent@^7.0.0: - version "7.0.5" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" - integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== - dependencies: - agent-base "^7.0.2" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -i18next-browser-languagedetector@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.1.0.tgz#01876fac51f86b78975e79b48ccb62e2313a2d7d" - integrity sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA== - dependencies: - "@babel/runtime" "^7.19.4" - -i18next@23.11.5: - version "23.11.5" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.11.5.tgz#d71eb717a7e65498d87d0594f2664237f9e361ef" - integrity sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA== - dependencies: - "@babel/runtime" "^7.23.2" - -iconv-lite@0.4.24, 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.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: - 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" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -idb-keyval@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.1.tgz#94516d625346d16f56f3b33855da11bfded2db33" - integrity sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg== - -idb-wrapper@^1.5.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2" - integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== - -identity-obj-proxy@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-walk@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" - integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== - dependencies: - minimatch "^5.0.1" - -ignore-walk@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" - integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== - dependencies: - minimatch "^9.0.0" - -ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.9, ignore@^5.2.0, ignore@^5.2.4: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== - -immutable@^4.0.0: - version "4.3.6" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" - integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== - -import-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== - dependencies: - import-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: - 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" - -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - -import-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-4.0.0.tgz#2710b8d66817d232e16f4166e319248d3d5492e2" - integrity sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ== - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.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== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexof@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg== - -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -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.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" - integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== - -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== - -ini@^3.0.0, ini@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ini/-/ini-3.0.1.tgz#c76ec81007875bc44d544ff7a11a55d12294102d" - integrity sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ== - -init-package-json@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" - integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== - dependencies: - npm-package-arg "^9.0.1" - promzard "^0.3.0" - read "^1.0.7" - read-package-json "^5.0.0" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^4.0.0" - -inquirer@8.2.4: - version "8.2.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" - 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" - -inquirer@8.2.6: - version "8.2.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" - integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== - 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 "^6.0.1" - -interface-datastore@^7.0.0: - version "7.0.4" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-7.0.4.tgz#f09ae4e2896f57f876d5d742a59e982fb3f42891" - integrity sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw== - dependencies: - interface-store "^3.0.0" - nanoid "^4.0.0" - uint8arrays "^4.0.2" - -interface-datastore@^8.2.0: - version "8.2.11" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-8.2.11.tgz#1d555ce6218ab6cba6291fc361debe9713590207" - integrity sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA== - dependencies: - interface-store "^5.0.0" - uint8arrays "^5.0.2" - -interface-store@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" - integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== - -interface-store@^5.0.0: - version "5.1.8" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-5.1.8.tgz#94bf867d165b5c904cccf09adeba215a5b0f459e" - integrity sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w== - -internal-slot@^1.0.4, internal-slot@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" - integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== - dependencies: - es-errors "^1.3.0" - hasown "^2.0.0" - side-channel "^1.0.4" - -interpret@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== - -into-stream@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-6.0.0.tgz#4bfc1244c0128224e18b8870e85b2de8e66c6702" - integrity sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA== - dependencies: - from2 "^2.3.0" - p-is-promise "^3.0.0" - -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" - -ip-address@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" - integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== - dependencies: - jsbn "1.1.0" - sprintf-js "^1.1.3" - -ip-regex@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipaddr.js@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== - -ipfs-client@^0.9.2: - version "0.9.2" - resolved "https://registry.yarnpkg.com/ipfs-client/-/ipfs-client-0.9.2.tgz#6773cc59f203ca910595bfb7a03345d0c31c1698" - integrity sha512-eVSOkMjBFxe8yYoJy3L5/FuajaltAoLnGooxC+mbjQqrrLcsDu/4zCdkrqCFFi1pQSbjbqaNRLELv6mebk5J3g== - dependencies: - ipfs-grpc-client "^0.12.0" - ipfs-http-client "^59.0.0" - merge-options "^3.0.4" - -ipfs-core-types@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.13.0.tgz#eb2f27df7b91940e39b201b08affc9a65f63f503" - integrity sha512-IIKS9v2D5KIqReZMbyuCStI4FRyIbRA9nD3fji1KgKJPiic1N3iGe2jL4hy4Y3FQ30VbheWJ9jAROwMyvqxYNA== - dependencies: - "@ipld/dag-pb" "^3.0.0" - "@libp2p/interface-keychain" "^1.0.3" - "@libp2p/interface-peer-id" "^1.0.4" - "@libp2p/interface-peer-info" "^1.0.2" - "@libp2p/interface-pubsub" "^3.0.0" - "@multiformats/multiaddr" "^11.0.0" - "@types/node" "^18.0.0" - interface-datastore "^7.0.0" - ipfs-unixfs "^8.0.0" - multiformats "^10.0.0" - -ipfs-core-utils@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.17.0.tgz#cb3581e66b588c2d80f6d8b05d15d0262447093a" - integrity sha512-mZbQ9ZkLGGR988hO0iCsB6FXDb0fS0vYRue07Ia8O3ODdKjZ69Jx7zYoYqpjTQQCgEN6RrX98aCTOw+ifziGvw== - dependencies: - "@libp2p/logger" "^2.0.0" - "@multiformats/multiaddr" "^11.0.0" - "@multiformats/multiaddr-to-uri" "^9.0.1" - any-signal "^3.0.0" - blob-to-it "^2.0.0" - browser-readablestream-to-it "^2.0.0" - err-code "^3.0.1" - ipfs-core-types "^0.13.0" - ipfs-unixfs "^8.0.0" - ipfs-utils "^9.0.6" - it-all "^2.0.0" - it-map "^2.0.0" - it-peekable "^2.0.0" - it-to-stream "^1.0.0" - merge-options "^3.0.4" - multiformats "^10.0.0" - nanoid "^4.0.0" - parse-duration "^1.0.0" - timeout-abort-controller "^3.0.0" - uint8arrays "^4.0.2" - -ipfs-grpc-client@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/ipfs-grpc-client/-/ipfs-grpc-client-0.12.0.tgz#356b63fadafdb82437f1c343465e0490e716a294" - integrity sha512-qBgXJ7ctALRYDDc1R7DqGhTtHy9e7EK4v/UzN61ZEB1X3eMSFxofU+tCBNm6zT33xHvBKomnT5Prt70WEGE/Ow== - dependencies: - "@improbable-eng/grpc-web" "^0.15.0" - "@libp2p/logger" "^2.0.0" - "@libp2p/peer-id" "^1.1.10" - "@multiformats/multiaddr" "^11.0.0" - change-case "^4.1.1" - err-code "^3.0.1" - ipfs-core-types "^0.13.0" - ipfs-core-utils "^0.17.0" - ipfs-grpc-protocol "^0.7.0" - ipfs-unixfs "^8.0.0" - it-first "^2.0.0" - it-pushable "^3.0.0" - multiformats "^10.0.0" - p-defer "^4.0.0" - protobufjs "^7.0.0" - uint8arrays "^4.0.2" - wherearewe "^2.0.1" - ws "^8.5.0" - -ipfs-grpc-protocol@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/ipfs-grpc-protocol/-/ipfs-grpc-protocol-0.7.0.tgz#1b13768d444b2a8ded45864471aa9bf451ae533e" - integrity sha512-T0+nvF1H83hbxmhZ/KKpm05MpvP7/mePdNvz/6h1mPXXOsfXdB3lKjcJbhbwegeKndDSjbnBWGOGN8Ql8x/1lQ== - -ipfs-http-client@^59.0.0: - version "59.0.0" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-59.0.0.tgz#66bc208d6bcbaaf238c054b3c0c0beffa2774190" - integrity sha512-cFMU8ykKgxK2/uAw4Hthy2Kd+UuoFBno89DOdUqHYvmilKrmfV5vrYwviVWLYveIpkkaj8FB5x4TBxsiU99y0Q== - dependencies: - "@ipld/dag-cbor" "^8.0.0" - "@ipld/dag-json" "^9.0.0" - "@ipld/dag-pb" "^3.0.0" - "@libp2p/logger" "^2.0.0" - "@libp2p/peer-id" "^1.1.10" - "@multiformats/multiaddr" "^11.0.0" - any-signal "^3.0.0" - dag-jose "^3.0.1" - err-code "^3.0.1" - ipfs-core-types "^0.13.0" - ipfs-core-utils "^0.17.0" - ipfs-utils "^9.0.6" - it-first "^2.0.0" - it-last "^2.0.0" - merge-options "^3.0.4" - multiformats "^10.0.0" - parse-duration "^1.0.0" - stream-to-it "^0.2.2" - uint8arrays "^4.0.2" - -ipfs-unixfs@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-8.0.0.tgz#342c09edab3cbed8baf26f661d81a0f72ab420e6" - integrity sha512-PAHtfyjiFs2PZBbeft5QRyXpVOvZ2zsGqID+zVRla7fjC1zRTqJkrGY9h6dF03ldGv/mSmFlNZh479qPC6aZKg== - dependencies: - err-code "^3.0.1" - protobufjs "^7.0.0" - -ipfs-utils@^9.0.6: - version "9.0.14" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" - integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== - dependencies: - any-signal "^3.0.0" - browser-readablestream-to-it "^1.0.0" - buffer "^6.0.1" - electron-fetch "^1.7.2" - err-code "^3.0.1" - is-electron "^2.2.0" - iso-url "^1.1.5" - it-all "^1.0.4" - it-glob "^1.0.1" - it-to-stream "^1.0.0" - merge-options "^3.0.4" - nanoid "^3.1.20" - native-fetch "^3.0.0" - node-fetch "^2.6.8" - react-native-fetch-api "^3.0.0" - stream-to-it "^0.2.2" - -iron-webcrypto@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz#aa60ff2aa10550630f4c0b11fd2442becdb35a6f" - integrity sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg== - -is-arguments@^1.0.4, is-arguments@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" - integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - -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-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" - -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-builtin-module@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - -is-callable@^1.1.3, 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-cidr@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-4.0.2.tgz#94c7585e4c6c77ceabf920f8cde51b8c0fda8814" - integrity sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA== - dependencies: - cidr-regex "^3.1.1" - -is-core-module@^2.11.0, is-core-module@^2.13.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" - integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== - dependencies: - hasown "^2.0.2" - -is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" - integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== - dependencies: - hasown "^2.0.2" - -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== - dependencies: - is-typed-array "^1.1.13" - -is-date-object@^1.0.1, is-date-object@^1.0.5: - 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-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - -is-electron@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" - integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== - -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-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - -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-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.10, is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - 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.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - -is-installed-globally@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -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-interactive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" - integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== - -is-json@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" - integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA== - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-map@^2.0.2, is-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" - integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== - -is-mobile@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-4.0.0.tgz#bba396eb9656e2739afde3053d7191da310fc758" - integrity sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew== - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - -is-my-ip-valid@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz#f7220d1146257c98672e6fba097a9f3f2d348442" - integrity sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg== - -is-my-json-valid@^2.20.6: - version "2.20.6" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz#a9d89e56a36493c77bda1440d69ae0dc46a08387" - integrity sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw== - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^5.0.0" - xtend "^4.0.0" - -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - -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-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-object@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" - integrity sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" - integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== - -is-reference@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - -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-set@^2.0.2, is-set@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" - integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== - -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" - integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== - dependencies: - call-bind "^1.0.7" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -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-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== - dependencies: - text-extensions "^1.0.0" - -is-text-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636" - integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== - dependencies: - text-extensions "^2.0.0" - -is-typed-array@^1.1.13, is-typed-array@^1.1.3: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - dependencies: - which-typed-array "^1.1.14" - -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-unicode-supported@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" - integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== - -is-weakmap@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" - integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== - -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-weakset@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" - integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - -is-what@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" - integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== - -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" - -is-wsl@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" - integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== - dependencies: - is-inside-container "^1.0.0" - -is64bit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is64bit/-/is64bit-2.0.0.tgz#198c627cbcb198bbec402251f88e5e1a51236c07" - integrity sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw== - dependencies: - system-architecture "^0.1.0" - -is@~0.2.6: - version "0.2.7" - resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" - integrity sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ== - -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@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -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== - -isbuffer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/isbuffer/-/isbuffer-0.0.0.tgz#38c146d9df528b8bf9b0701c3d43cf12df3fc39b" - integrity sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -iso-url@^1.1.5: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" - integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isomorphic-unfetch@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" - integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== - dependencies: - node-fetch "^2.6.1" - unfetch "^4.2.0" - -isows@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" - integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== - -isows@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.4.tgz#810cd0d90cc4995c26395d2aa4cfa4037ebdf061" - integrity sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ== - -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== - -issue-parser@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/issue-parser/-/issue-parser-6.0.0.tgz#b1edd06315d4f2044a9755daf85fdafde9b4014a" - integrity sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA== - dependencies: - lodash.capitalize "^4.2.1" - lodash.escaperegexp "^4.1.2" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.uniqby "^4.7.0" - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" - integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -it-all@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" - integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== - -it-all@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" - integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== - -it-first@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" - integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== - -it-glob@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" - integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== - dependencies: - "@types/minimatch" "^3.0.4" - minimatch "^3.0.4" - -it-last@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-last/-/it-last-2.0.1.tgz#a6f3253459cb77e917aeada3b2c4ae9f3e66c64b" - integrity sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg== - -it-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-map/-/it-map-2.0.1.tgz#d5251fd6b222d6ee39293d406a3f8fce54fb9220" - integrity sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ== - -it-peekable@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-2.0.1.tgz#1e118610473aa511efc70f3bb7a7066178728dd3" - integrity sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA== - -it-pushable@^3.0.0, it-pushable@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/it-pushable/-/it-pushable-3.2.3.tgz#e2b80aed90cfbcd54b620c0a0785e546d4e5f334" - integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== - dependencies: - p-defer "^4.0.0" - -it-stream-types@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-1.0.5.tgz#9c72e6adefdea9dac69d0a28fbea783deebd508d" - integrity sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA== - -it-stream-types@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-2.0.1.tgz#69cb4d7e79e707b8257a8997e02751ccb6c3af32" - integrity sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg== - -it-to-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" - integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== - dependencies: - buffer "^6.0.3" - fast-fifo "^1.0.0" - get-iterator "^1.0.2" - p-defer "^3.0.0" - p-fifo "^1.0.0" - readable-stream "^3.6.0" - -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jake@^10.8.5: - version "10.9.1" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" - integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - -java-properties@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" - integrity sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ== - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.4.1, jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-jsdom@29.7.0, jest-environment-jsdom@^29.0.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" - integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/jsdom" "^20.0.0" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - jsdom "^20.0.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock-extended@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/jest-mock-extended/-/jest-mock-extended-2.0.6.tgz#a41c4e97036859846a893e3572abe5400e82d9e7" - integrity sha512-KoDdjqwIp2phaOWB0hr4O+9HF7hIJx7O+Reefi3iGrNhUpzVkod9UozYTSanvbNvjFYIEH6noA2tIjc8IDpadw== - dependencies: - ts-essentials "^7.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-preset-angular@13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-13.0.0.tgz#8427926052711a31b09aa20b67ec0d409e2c4f8a" - integrity sha512-FNaWL41PgW3yvleB423pf1Z7xqaDaFMJxi2TwUek9J1p3SHT1Se+A2jeOI27XcC16zj87blUuffh/Smse2Grpg== - dependencies: - bs-logger "^0.2.6" - esbuild-wasm ">=0.13.8" - jest-environment-jsdom "^29.0.0" - jest-util "^29.0.0" - pretty-format "^29.0.0" - ts-jest "^29.0.0" - optionalDependencies: - esbuild ">=0.13.8" - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.4.1, jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.0.0, jest-util@^29.4.1, jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^27.0.2, jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^29.4.3, jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -jiti@^1.18.2: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - -jiti@^1.21.0: - version "1.21.6" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" - integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== - -js-sha256@0.9.0, js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - -js-sha256@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.0.tgz#256a921d9292f7fe98905face82e367abaca9576" - integrity sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q== - -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -"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, 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" - -js-yaml@^3.10.0, js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js2xmlparser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" - integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== - dependencies: - xmlcreate "^2.0.4" - -jsbn@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" - integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsdoc@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-4.0.2.tgz#a1273beba964cf433ddf7a70c23fd02c3c60296e" - integrity sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg== - dependencies: - "@babel/parser" "^7.20.15" - "@jsdoc/salty" "^0.2.1" - "@types/markdown-it" "^12.2.3" - bluebird "^3.7.2" - catharsis "^0.9.0" - escape-string-regexp "^2.0.0" - js2xmlparser "^4.0.2" - klaw "^3.0.0" - markdown-it "^12.3.2" - markdown-it-anchor "^8.4.1" - marked "^4.0.10" - mkdirp "^1.0.4" - requizzle "^0.2.3" - strip-json-comments "^3.1.0" - underscore "~1.13.2" - -jsdom@^20.0.0: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" - integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== - dependencies: - abab "^2.0.6" - acorn "^8.8.1" - acorn-globals "^7.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.2" - decimal.js "^10.4.2" - domexception "^4.0.0" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.1" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.2" - parse5 "^7.1.1" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^4.1.2" - w3c-xmlserializer "^4.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - ws "^8.11.0" - xml-name-validator "^4.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -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, json-parse-even-better-errors@^2.3.1: - 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-parse-even-better-errors@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" - integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== - -json-rpc-engine@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" - integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== - dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - eth-rpc-errors "^4.0.2" - -json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== - -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-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -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-nice@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" - integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== - -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.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc-parser@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - -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" - -jsonparse@^1.2.0, jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -jsonpointer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - -jspm@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jspm/-/jspm-3.1.0.tgz#d0115a8198697f0c715bbfce2c9827d0cb8db5e3" - integrity sha512-5erLAhhYH6OQr7gGKyq16QHQKj/pU8z2/1aTs+h/6B760ZM1O/WTEmnXXn+JuKPV6fYml0+4xRmpUs3b2o1GTQ== - dependencies: - "@jspm/generator" "^1.1.10" - cac "^6.7.14" - ora "^6.3.0" - picocolors "^1.0.0" - rollup "^3.29.2" - -jsprim@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" - integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== - 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, jsx-ast-utils@^3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - -just-diff-apply@^5.2.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" - integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== - -just-diff@^5.0.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241" - integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== - -jwt-decode@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" - integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== - -jwt-simple@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/jwt-simple/-/jwt-simple-0.5.6.tgz#3357adec55b26547114157be66748995b75b333a" - integrity sha512-40aUybvhH9t2h71ncA1/1SbtTNCVZHgsTsTgqPUxGWDmUDrXyDf2wMNQKEbdBjbf4AI+fQhbECNTV6lWxQKUzg== - -karma-source-map-support@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz#58526ceccf7e8730e56effd97a4de8d712ac0d6b" - integrity sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A== - dependencies: - source-map-support "^0.5.5" - -keccak@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" - integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -keyvaluestorage-interface@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" - integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== - -kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" - integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== - dependencies: - graceful-fs "^4.1.9" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -klona@^2.0.4, klona@^2.0.5, klona@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== - -language-subtag-registry@^0.3.20: - version "0.3.23" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" - integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== - -language-tags@^1.0.5, language-tags@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" - integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== - dependencies: - language-subtag-registry "^0.3.20" - -launch-editor@^2.6.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.8.0.tgz#7255d90bdba414448e2138faa770a74f28451305" - integrity sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.8.1" - -lazy-ass@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" - integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== - -less-loader@11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-11.1.0.tgz#a452384259bdf8e4f6d5fdcc39543609e6313f82" - integrity sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug== - dependencies: - klona "^2.0.4" - -less@4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246" - integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== - dependencies: - copy-anything "^2.0.1" - parse-node-version "^1.0.1" - tslib "^2.3.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - needle "^3.1.0" - source-map "~0.6.0" - -level-blobs@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" - integrity sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg== - dependencies: - level-peek "1.0.6" - once "^1.3.0" - readable-stream "^1.0.26-4" - -level-filesystem@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/level-filesystem/-/level-filesystem-1.2.0.tgz#a00aca9919c4a4dfafdca6a8108d225aadff63b3" - integrity sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g== - dependencies: - concat-stream "^1.4.4" - errno "^0.1.1" - fwd-stream "^1.0.4" - level-blobs "^0.1.7" - level-peek "^1.0.6" - level-sublevel "^5.2.0" - octal "^1.0.0" - once "^1.3.0" - xtend "^2.2.0" - -level-fix-range@2.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-2.0.0.tgz#c417d62159442151a19d9a2367868f1724c2d548" - integrity sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA== - dependencies: - clone "~0.1.9" - -level-fix-range@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-1.0.2.tgz#bf15b915ae36d8470c821e883ddf79cd16420828" - integrity sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ== - -"level-hooks@>=4.4.0 <5": - version "4.5.0" - resolved "https://registry.yarnpkg.com/level-hooks/-/level-hooks-4.5.0.tgz#1b9ae61922930f3305d1a61fc4d83c8102c0dd93" - integrity sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA== - dependencies: - string-range "~1.2" - -level-js@^2.1.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/level-js/-/level-js-2.2.4.tgz#bc055f4180635d4489b561c9486fa370e8c11697" - integrity sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ== - dependencies: - abstract-leveldown "~0.12.0" - idb-wrapper "^1.5.0" - isbuffer "~0.0.0" - ltgt "^2.1.2" - typedarray-to-buffer "~1.0.0" - xtend "~2.1.2" - -level-peek@1.0.6, level-peek@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/level-peek/-/level-peek-1.0.6.tgz#bec51c72a82ee464d336434c7c876c3fcbcce77f" - integrity sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ== - dependencies: - level-fix-range "~1.0.2" - -level-sublevel@^5.2.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-5.2.3.tgz#744c12c72d2e72be78dde3b9b5cd84d62191413a" - integrity sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA== - dependencies: - level-fix-range "2.0" - level-hooks ">=4.4.0 <5" - string-range "~1.2.1" - xtend "~2.0.4" - -levelup@^0.18.2: - version "0.18.6" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-0.18.6.tgz#e6a01cb089616c8ecc0291c2a9bd3f0c44e3e5eb" - integrity sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q== - dependencies: - bl "~0.8.1" - deferred-leveldown "~0.2.0" - errno "~0.1.1" - prr "~0.0.0" - readable-stream "~1.0.26" - semver "~2.3.1" - xtend "~3.0.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -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" - -libnpmaccess@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" - integrity sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag== - dependencies: - aproba "^2.0.0" - minipass "^3.1.1" - npm-package-arg "^9.0.1" - npm-registry-fetch "^13.0.0" - -libnpmdiff@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-4.0.5.tgz#ffaf93fa9440ea759444b8830fdb5c661b09a7c0" - integrity sha512-9fICQIzmH892UwHHPmb+Seup50UIBWcMIK2FdxvlXm9b4kc1nSH0b/BuY1mORJQtB6ydPMnn+BLzOTmd/SKJmw== - dependencies: - "@npmcli/disparity-colors" "^2.0.0" - "@npmcli/installed-package-contents" "^1.0.7" - binary-extensions "^2.2.0" - diff "^5.1.0" - minimatch "^5.0.1" - npm-package-arg "^9.0.1" - pacote "^13.6.1" - tar "^6.1.0" - -libnpmexec@^4.0.14: - version "4.0.14" - resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-4.0.14.tgz#9ad44232434b374e477eb2c2e4548baaf698f773" - integrity sha512-dwmzv2K29SdoAHBOa7QR6CfQbFG/PiZDRF6HZrlI6C4DLt2hNgOHTFaUGOpqE2C+YGu0ZwYTDywxRe0eOnf0ZA== - dependencies: - "@npmcli/arborist" "^5.6.3" - "@npmcli/ci-detect" "^2.0.0" - "@npmcli/fs" "^2.1.1" - "@npmcli/run-script" "^4.2.0" - chalk "^4.1.0" - mkdirp-infer-owner "^2.0.0" - npm-package-arg "^9.0.1" - npmlog "^6.0.2" - pacote "^13.6.1" - proc-log "^2.0.0" - read "^1.0.7" - read-package-json-fast "^2.0.2" - semver "^7.3.7" - walk-up-path "^1.0.0" - -libnpmfund@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-3.0.5.tgz#817f9e2120889beb483d9ba8eda142bb84293e4e" - integrity sha512-KdeRoG/dem8H3PcEU2/0SKi3ip7AWwczgS72y/3PE+PBrz/s/G52FNIA9jeLnBirkLC0sOyQHfeM3b7e24ZM+g== - dependencies: - "@npmcli/arborist" "^5.6.3" - -libnpmhook@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-8.0.4.tgz#6c58e5fe763ff5d600ae9c20457ea9a69d1f7d87" - integrity sha512-nuD6e+Nx0OprjEi0wOeqASMl6QIH235th/Du2/8upK3evByFhzIgdfOeP1OhstavW4xtsl0hk5Vw4fAWWuSUgA== - dependencies: - aproba "^2.0.0" - npm-registry-fetch "^13.0.0" - -libnpmorg@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-4.0.4.tgz#2a01d49372cf0df90d79a61e69bddaf2ed704311" - integrity sha512-1bTpD7iub1rDCsgiBguhJhiDufLQuc8DEti20euqsXz9O0ncXVpCYqf2SMmHR4GEdmAvAj2r7FMiyA9zGdaTpA== - dependencies: - aproba "^2.0.0" - npm-registry-fetch "^13.0.0" - -libnpmpack@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-4.1.3.tgz#025cfe39829acd8260662bf259e3a9331fc1e4b2" - integrity sha512-rYP4X++ME3ZiFO+2iN3YnXJ4LB4Gsd0z5cgszWJZxaEpDN4lRIXirSyynGNsN/hn4taqnlxD+3DPlFDShvRM8w== - dependencies: - "@npmcli/run-script" "^4.1.3" - npm-package-arg "^9.0.1" - pacote "^13.6.1" - -libnpmpublish@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-6.0.5.tgz#5a894f3de2e267d62f86be2a508e362599b5a4b1" - integrity sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg== - dependencies: - normalize-package-data "^4.0.0" - npm-package-arg "^9.0.1" - npm-registry-fetch "^13.0.0" - semver "^7.3.7" - ssri "^9.0.0" - -libnpmsearch@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-5.0.4.tgz#b32aa2b23051c00cdcc0912274d0d416e6655d81" - integrity sha512-XHDmsvpN5+pufvGnfLRqpy218gcGGbbbXR6wPrDJyd1em6agKdYByzU5ccskDHH9iVm2UeLydpDsW1ksYuU0cg== - dependencies: - npm-registry-fetch "^13.0.0" - -libnpmteam@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-4.0.4.tgz#ac26068808d93b1051d926457db14e4b3ff669ef" - integrity sha512-rzKSwi6MLzwwevbM/vl+BBQTErgn24tCfgPUdzBlszrw3j5necOu7WnTzgvZMDv6maGUwec6Ut1rxszOgH0l+Q== - dependencies: - aproba "^2.0.0" - npm-registry-fetch "^13.0.0" - -libnpmversion@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-3.0.7.tgz#e4c6c07ee28cf351ce1e2293a5ac9922b09ea94d" - integrity sha512-O0L4eNMUIMQ+effi1HsZPKp2N6wecwqGqB8PvkvmLPWN7EsdabdzAVG48nv0p/OjlbIai5KQg/L+qMMfCA4ZjA== - dependencies: - "@npmcli/git" "^3.0.0" - "@npmcli/run-script" "^4.1.3" - json-parse-even-better-errors "^2.3.1" - proc-log "^2.0.0" - semver "^7.3.7" - -license-webpack-plugin@4.0.2, license-webpack-plugin@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz#1e18442ed20b754b82f1adeff42249b81d11aec6" - integrity sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw== - dependencies: - webpack-sources "^3.0.0" - -lightningcss-darwin-arm64@1.25.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.25.1.tgz#f2943d6dc1a4d331de0ff9ad54cd03cf10e0ead3" - integrity sha512-G4Dcvv85bs5NLENcu/s1f7ehzE3D5ThnlWSDwE190tWXRQCQaqwcuHe+MGSVI/slm0XrxnaayXY+cNl3cSricw== - -lightningcss-darwin-x64@1.25.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.25.1.tgz#dc5d2d5c4372308b1a326a8c5efcc3e489b654c6" - integrity sha512-dYWuCzzfqRueDSmto6YU5SoGHvZTMU1Em9xvhcdROpmtOQLorurUZz8+xFxZ51lCO2LnYbfdjZ/gCqWEkwixNg== - -lightningcss-freebsd-x64@1.25.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.25.1.tgz#bb37f25c2d136ff33b25dd08bee5e167afacc49c" - integrity sha512-hXoy2s9A3KVNAIoKz+Fp6bNeY+h9c3tkcx1J3+pS48CqAt+5bI/R/YY4hxGL57fWAIquRjGKW50arltD6iRt/w== - -lightningcss-linux-arm-gnueabihf@1.25.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.25.1.tgz#b5395b55fb8a4cea87e2723c5c61a5124a0d4c42" - integrity sha512-tWyMgHFlHlp1e5iW3EpqvH5MvsgoN7ZkylBbG2R2LWxnvH3FuWCJOhtGcYx9Ks0Kv0eZOBud789odkYLhyf1ng== - -lightningcss-linux-arm64-gnu@1.25.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.25.1.tgz#4303c196d8d32b66b6a2f7c939c938bd0f138f75" - integrity sha512-Xjxsx286OT9/XSnVLIsFEDyDipqe4BcLeB4pXQ/FEA5+2uWCCuAEarUNQumRucnj7k6ftkAHUEph5r821KBccQ== - -lightningcss-linux-arm64-musl@1.25.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.25.1.tgz#f45d7c832bb9c73a13dfc59c8de4692f7e47040a" - integrity sha512-IhxVFJoTW8wq6yLvxdPvyHv4NjzcpN1B7gjxrY3uaykQNXPHNIpChLB52+wfH+yS58zm1PL4LemUp8u9Cfp6Bw== - -lightningcss-linux-x64-gnu@1.25.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.25.1.tgz#a0836d5d25601ea8ef23292a748ea9e52d5bc086" - integrity sha512-RXIaru79KrREPEd6WLXfKfIp4QzoppZvD3x7vuTKkDA64PwTzKJ2jaC43RZHRt8BmyIkRRlmywNhTRMbmkPYpA== - -lightningcss-linux-x64-musl@1.25.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.25.1.tgz#6f92021bae952645fe297bea10467c3cccba0138" - integrity sha512-TdcNqFsAENEEFr8fJWg0Y4fZ/nwuqTRsIr7W7t2wmDUlA8eSXVepeeONYcb+gtTj1RaXn/WgNLB45SFkz+XBZA== - -lightningcss-win32-x64-msvc@1.25.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.25.1.tgz#1431840070e5976d5c5b06e44e4304606a01fb05" - integrity sha512-9KZZkmmy9oGDSrnyHuxP6iMhbsgChUiu/NSgOx+U1I/wTngBStDf2i2aGRCHvFqj19HqqBEI4WuGVQBa2V6e0A== - -lightningcss@^1.22.1: - version "1.25.1" - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.25.1.tgz#6136c166ac61891fbc1af7fba7b620c50f58fb2d" - integrity sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg== - dependencies: - detect-libc "^1.0.3" - optionalDependencies: - lightningcss-darwin-arm64 "1.25.1" - lightningcss-darwin-x64 "1.25.1" - lightningcss-freebsd-x64 "1.25.1" - lightningcss-linux-arm-gnueabihf "1.25.1" - lightningcss-linux-arm64-gnu "1.25.1" - lightningcss-linux-arm64-musl "1.25.1" - lightningcss-linux-x64-gnu "1.25.1" - lightningcss-linux-x64-musl "1.25.1" - lightningcss-win32-x64-msvc "1.25.1" - -lilconfig@^2.0.3, lilconfig@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lilconfig@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" - integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== - -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== - -lines-and-columns@^2.0.3, lines-and-columns@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" - integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== - -linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== - dependencies: - uc.micro "^1.0.1" - -listhen@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.7.2.tgz#66b81740692269d5d8cafdc475020f2fc51afbae" - integrity sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g== - dependencies: - "@parcel/watcher" "^2.4.1" - "@parcel/watcher-wasm" "^2.4.1" - citty "^0.1.6" - clipboardy "^4.0.0" - consola "^3.2.3" - crossws "^0.2.0" - defu "^6.1.4" - get-port-please "^3.1.2" - h3 "^1.10.2" - http-shutdown "^1.2.2" - jiti "^1.21.0" - mlly "^1.6.1" - node-forge "^1.3.1" - pathe "^1.1.2" - std-env "^3.7.0" - ufo "^1.4.0" - untun "^0.1.3" - uqr "^0.1.2" - -listr2@^3.8.3: - version "3.14.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" - integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== - dependencies: - 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.1" - through "^2.3.8" - wrap-ansi "^7.0.0" - -lit-element@^3.3.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.3.tgz#10bc19702b96ef5416cf7a70177255bfb17b3209" - integrity sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA== - dependencies: - "@lit-labs/ssr-dom-shim" "^1.1.0" - "@lit/reactive-element" "^1.3.0" - lit-html "^2.8.0" - -lit-element@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-4.0.5.tgz#f20cd8a6231eaf5358f7a6877ca6ea7628fa2015" - integrity sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q== - dependencies: - "@lit-labs/ssr-dom-shim" "^1.2.0" - "@lit/reactive-element" "^2.0.4" - lit-html "^3.1.2" - -lit-html@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.8.0.tgz#96456a4bb4ee717b9a7d2f94562a16509d39bffa" - integrity sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q== - dependencies: - "@types/trusted-types" "^2.0.2" - -lit-html@^3.1.0, lit-html@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-3.1.3.tgz#ae2e9fee0258d0a1b5d7b86c87da51117e4f911b" - integrity sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA== - dependencies: - "@types/trusted-types" "^2.0.2" - -lit@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.8.0.tgz#4d838ae03059bf9cafa06e5c61d8acc0081e974e" - integrity sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA== - dependencies: - "@lit/reactive-element" "^1.6.0" - lit-element "^3.3.0" - lit-html "^2.8.0" - -lit@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lit/-/lit-3.1.0.tgz#76429b85dc1f5169fed499a0f7e89e2e619010c9" - integrity sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w== - dependencies: - "@lit/reactive-element" "^2.0.0" - lit-element "^4.0.0" - lit-html "^3.1.0" - -lmdb@2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837" - integrity sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ== - dependencies: - msgpackr "^1.9.5" - node-addon-api "^6.1.0" - node-gyp-build-optional-packages "5.1.1" - ordered-binary "^1.4.1" - weak-lru-cache "^1.2.2" - optionalDependencies: - "@lmdb/lmdb-darwin-arm64" "2.8.5" - "@lmdb/lmdb-darwin-x64" "2.8.5" - "@lmdb/lmdb-linux-arm" "2.8.5" - "@lmdb/lmdb-linux-arm64" "2.8.5" - "@lmdb/lmdb-linux-x64" "2.8.5" - "@lmdb/lmdb-win32-x64" "2.8.5" - -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" - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -loader-utils@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== - -loader-utils@^2.0.0, loader-utils@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" - integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== - dependencies: - p-locate "^2.0.0" - path-exists "^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" - -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.capitalize@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" - integrity sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.escaperegexp@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" - integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== - -lodash.isequal@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - -lodash.memoize@4.x, lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -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.once@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash.uniqby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" - integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== - -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.0.0, 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" - -log-symbols@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" - integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== - dependencies: - chalk "^5.0.0" - is-unicode-supported "^1.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -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" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^10.0.1, lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -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" - -lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: - version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - -lru_map@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.4.1.tgz#f7b4046283c79fb7370c36f8fca6aee4324b0a98" - integrity sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg== - -ltgt@^2.1.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== - -lz-string@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" - integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== - -magic-string@0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.29.0.tgz#f034f79f8c43dba4ae1730ffb5e8c4e084b16cf3" - integrity sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - -magic-string@0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529" - integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - -magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -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" - -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@1.x, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6, make-fetch-happen@^10.2.0: - version "10.2.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" - integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" - -make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" - integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^17.0.0" - http-cache-semantics "^4.1.1" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^10.0.0" - -make-fetch-happen@^8.0.14: - version "8.0.14" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -markdown-it-anchor@^8.4.1: - version "8.6.7" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634" - integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA== - -markdown-it@^12.3.2: - version "12.3.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" - integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== - dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -marked-terminal@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-5.2.0.tgz#c5370ec2bae24fb2b34e147b731c94fa933559d3" - integrity sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA== - dependencies: - ansi-escapes "^6.2.0" - cardinal "^2.1.1" - chalk "^5.2.0" - cli-table3 "^0.6.3" - node-emoji "^1.11.0" - supports-hyperlinks "^2.3.0" - -marked@^4.0.10: - version "4.3.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" - integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.28: - version "2.0.28" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" - integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== - -mdn-data@2.0.30: - version "2.0.30" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" - integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^3.4.1, memfs@^3.4.12, memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== - dependencies: - fs-monkey "^1.0.4" - -meow@^12.0.1: - version "12.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6" - integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== - -meow@^8.0.0: - version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-options@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" - integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== - dependencies: - is-plain-obj "^2.1.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3, 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== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micro-ftch@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" - integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== - -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - 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.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - 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.6.0, mime@^1.4.1, mime@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - -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-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -mini-css-extract-plugin@2.7.6: - version "2.7.6" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz#282a3d38863fddcd2e0c220aaed5b90bc156564d" - integrity sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw== - dependencies: - schema-utils "^4.0.0" - -mini-css-extract-plugin@~2.4.7: - version "2.4.7" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz#b9f4c4f4d727c7a3cd52a11773bb739f00177fac" - integrity sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg== - dependencies: - schema-utils "^4.0.0" - -mini-svg-data-uri@^1.2.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" - integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" - integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -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, minimatch@^5.1.0: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^8.0.2: - version "8.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" - integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - -minipass-fetch@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" - integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== - dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - -minipass-fetch@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" - integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== - dependencies: - minipass "^7.0.3" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3, minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: - 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" - -mipd@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mipd/-/mipd-0.0.5.tgz#367ee796531c23f0631f129038700b1406663aec" - integrity sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA== - dependencies: - viem "^1.1.4" - -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -mkdirp-infer-owner@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" - integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== - dependencies: - chownr "^2.0.0" - infer-owner "^1.0.4" - mkdirp "^1.0.3" - -mkdirp@^0.5.6: - 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, mkdirp@^1.0.4, mkdirp@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mlly@^1.6.1, mlly@^1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.1.tgz#e0336429bb0731b6a8e887b438cbdae522c8f32f" - integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA== - dependencies: - acorn "^8.11.3" - pathe "^1.1.2" - pkg-types "^1.1.1" - ufo "^1.5.3" - -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - -motion@10.16.2: - version "10.16.2" - resolved "https://registry.yarnpkg.com/motion/-/motion-10.16.2.tgz#7dc173c6ad62210a7e9916caeeaf22c51e598d21" - integrity sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ== - dependencies: - "@motionone/animation" "^10.15.1" - "@motionone/dom" "^10.16.2" - "@motionone/svelte" "^10.16.2" - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" - "@motionone/vue" "^10.16.2" - -mri@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -mrmime@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" - integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== - -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.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -msgpackr-extract@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012" - integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== - dependencies: - node-gyp-build-optional-packages "5.2.2" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" - -msgpackr@^1.9.5, msgpackr@^1.9.9: - version "1.10.2" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.2.tgz#a73de4767f76659e8c69cf9c80fdfce83937a44a" - integrity sha512-L60rsPynBvNE+8BWipKKZ9jHcSGbtyJYIwjRq0VrIvQ08cRjntGXJYW/tmciZ2IHWIY8WEW32Qa2xbh5+SKBZA== - optionalDependencies: - msgpackr-extract "^3.0.2" - -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - -multiformats@^10.0.0, multiformats@^10.0.1: - version "10.0.3" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-10.0.3.tgz#d4147d01f9a31271c6fb5d24adf9b01f9e656bba" - integrity sha512-K2yGSmstS/oEmYiEIieHb53jJCaqp4ERPDQAYrm5sV3UUrVDZeshJQCK6GHAKyIGufU1vAcbS0PdAAZmC7Tzcw== - -multiformats@^11.0.0, multiformats@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" - integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== - -multiformats@^12.0.1: - version "12.1.3" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" - integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== - -multiformats@^13.0.0, multiformats@^13.1.0: - version "13.1.3" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.3.tgz#36d312401ff424948ef90746fbda9dd798cffa09" - integrity sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw== - -multiformats@^9.4.2: - version "9.9.0" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" - integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== - -mustache@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.0.0.tgz#7f02465dbb5b435859d154831c032acdfbbefb31" - integrity sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA== - -mute-stream@0.0.8, mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nanoid@3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - -nanoid@^3.1.20, nanoid@^3.3.4, nanoid@^3.3.6, nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -nanoid@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" - integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== - -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - -napi-wasm@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" - integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== - -native-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" - integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== - -native-fetch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-4.0.2.tgz#75c8a44c5f3bb021713e5e24f2846750883e49af" - integrity sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg== - -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -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== - -near-abi@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/near-abi/-/near-abi-0.1.1.tgz#b7ead408ca4ad11de4fe3e595d30a7a8bc5307e0" - integrity sha512-RVDI8O+KVxRpC3KycJ1bpfVj9Zv+xvq9PlW1yIFl46GhrnLw83/72HqHGjGDjQ8DtltkcpSjY9X3YIGZ+1QyzQ== - dependencies: - "@types/json-schema" "^7.0.11" - -near-api-js@4.0.3, near-api-js@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-4.0.3.tgz#7b31e8d86224acf526cda7c4e5e57f44b23c4719" - integrity sha512-NNxIUOGjTafDp65WKRmRqjOTdn4gukse5zFzo2YS/1YJMac++WR05mEsiAB2Aj54rDb/PL8TObQZgHtSs/Pjvg== - dependencies: - "@near-js/accounts" "1.2.1" - "@near-js/crypto" "1.2.4" - "@near-js/keystores" "0.0.12" - "@near-js/keystores-browser" "0.0.12" - "@near-js/keystores-node" "0.0.12" - "@near-js/providers" "0.2.2" - "@near-js/signers" "0.1.4" - "@near-js/transactions" "1.2.2" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.2.2" - "@near-js/wallet-account" "1.2.2" - "@noble/curves" "1.2.0" - borsh "1.0.0" - depd "2.0.0" - http-errors "1.7.2" - near-abi "0.1.1" - node-fetch "2.6.7" - -near-api-js@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-4.0.4.tgz#e04ef1fa051d3291c1a9bf1b4f07f880c49f80ca" - integrity sha512-IG+6NAMtn854palu/cIbVgey0OsIzllcajc3fbEbh7cb2pyPNMsfsBIO5WqsV+rY+7Tqr6lqYQ8f+4BHGUttyg== - dependencies: - "@near-js/accounts" "1.2.2" - "@near-js/crypto" "1.3.0" - "@near-js/keystores" "0.1.0" - "@near-js/keystores-browser" "0.1.0" - "@near-js/keystores-node" "0.0.13" - "@near-js/providers" "0.2.3" - "@near-js/signers" "0.1.5" - "@near-js/transactions" "1.2.3" - "@near-js/types" "0.2.1" - "@near-js/utils" "0.3.0" - "@near-js/wallet-account" "1.2.3" - "@noble/curves" "1.2.0" - borsh "1.0.0" - depd "2.0.0" - http-errors "1.7.2" - near-abi "0.1.1" - node-fetch "2.6.7" - -near-hd-key@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/near-hd-key/-/near-hd-key-1.2.1.tgz#f508ff15436cf8a439b543220f3cc72188a46756" - integrity sha512-SIrthcL5Wc0sps+2e1xGj3zceEa68TgNZDLuCx0daxmfTP7sFTB3/mtE2pYhlFsCxWoMn+JfID5E1NlzvvbRJg== - dependencies: - bip39 "3.0.2" - create-hmac "1.1.7" - tweetnacl "1.0.3" - -near-seed-phrase@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/near-seed-phrase/-/near-seed-phrase-0.2.0.tgz#fb7cf89682112b1160ab68abb50dc821f49be18a" - integrity sha512-NpmrnejpY1AdlRpDZ0schJQJtfBaoUheRfiYtQpcq9TkwPgqKZCRULV5L3hHmLc0ep7KRtikbPQ9R2ztN/3cyQ== - dependencies: - bip39-light "^1.0.7" - bs58 "^4.0.1" - near-hd-key "^1.2.1" - tweetnacl "^1.0.2" - -needle@^3.1.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" - integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== - dependencies: - iconv-lite "^0.6.3" - sax "^1.2.4" - -negotiator@0.6.3, negotiator@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nerf-dart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" - integrity sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g== - -next@13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/next/-/next-13.3.0.tgz#40632d303d74fc8521faa0a5bf4a033a392749b1" - integrity sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA== - dependencies: - "@next/env" "13.3.0" - "@swc/helpers" "0.4.14" - busboy "1.6.0" - caniuse-lite "^1.0.30001406" - postcss "8.4.14" - styled-jsx "5.1.1" - optionalDependencies: - "@next/swc-darwin-arm64" "13.3.0" - "@next/swc-darwin-x64" "13.3.0" - "@next/swc-linux-arm64-gnu" "13.3.0" - "@next/swc-linux-arm64-musl" "13.3.0" - "@next/swc-linux-x64-gnu" "13.3.0" - "@next/swc-linux-x64-musl" "13.3.0" - "@next/swc-win32-arm64-msvc" "13.3.0" - "@next/swc-win32-ia32-msvc" "13.3.0" - "@next/swc-win32-x64-msvc" "13.3.0" - -ngx-deploy-npm@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ngx-deploy-npm/-/ngx-deploy-npm-7.1.0.tgz#a3eb9f40f892cd5a9ce4a27abcc72520fde9d0dc" - integrity sha512-zUv/C9giRVrhmOu3dIG3tjjN+1/bOV5xQzPGgXBZL74M5dgZo+/Dui1JxrVCZH9m8QogR4Zg+0Xq6FeXo2xKrg== - -nice-napi@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nice-napi/-/nice-napi-1.0.2.tgz#dc0ab5a1eac20ce548802fc5686eaa6bc654927b" - integrity sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA== - dependencies: - node-addon-api "^3.0.0" - node-gyp-build "^4.2.2" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-abi@^3.3.0: - version "3.65.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3" - integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA== - dependencies: - semver "^7.3.5" - -node-abort-controller@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" - integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-addon-api@^3.0.0, node-addon-api@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-addon-api@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" - integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== - -node-addon-api@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" - integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== - -node-addon-api@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" - integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== - -node-emoji@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== - dependencies: - lodash "^4.17.21" - -node-fetch-native@^1.6.1, node-fetch-native@^1.6.2, node-fetch-native@^1.6.3: - version "1.6.4" - resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" - integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== - -node-fetch@2.6.7: - 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-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.8: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-forge@^1, node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-gyp-build-optional-packages@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" - integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== - dependencies: - detect-libc "^2.0.1" - -node-gyp-build-optional-packages@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4" - integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== - dependencies: - detect-libc "^2.0.1" - -node-gyp-build@^4.2.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" - integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== - -node-gyp-build@^4.2.2, node-gyp-build@^4.3.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" - integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== - -node-gyp@^9.0.0, node-gyp@^9.1.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" - integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== - dependencies: - env-paths "^2.2.0" - exponential-backoff "^3.1.1" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^10.0.3" - nopt "^6.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-machine-id@^1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" - integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== - -node-releases@^2.0.12: - version "2.0.12" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" - integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nopt@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" - integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== - dependencies: - abbrev "^1.0.0" - -normalize-package-data@^2.5.0: - 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-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" - integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== - dependencies: - hosted-git-info "^5.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-package-data@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" - integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== - dependencies: - hosted-git-info "^6.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-package-data@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.2.tgz#a7bc22167fe24025412bcff0a9651eb768b03506" - integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== - dependencies: - hosted-git-info "^7.0.0" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -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-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -normalize-url@^6.0.0, normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-audit-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-3.0.0.tgz#1bf3e531208b5f77347c8d00c3d9badf5be30cd6" - integrity sha512-tWQzfbwz1sc4244Bx2BVELw0EmZlCsCF0X93RDcmmwhonCsPMoEviYsi+32R+mdRvOWXolPce9zo64n2xgPESw== - dependencies: - chalk "^4.0.0" - -npm-bundled@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-bundled@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4" - integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== - dependencies: - npm-normalize-package-bin "^2.0.0" - -npm-bundled@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" - integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== - dependencies: - npm-normalize-package-bin "^3.0.0" - -npm-install-checks@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-5.0.0.tgz#5ff27d209a4e3542b8ac6b0c1db6063506248234" - integrity sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA== - dependencies: - semver "^7.1.1" - -npm-install-checks@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" - integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== - dependencies: - semver "^7.1.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-normalize-package-bin@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" - integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== - -npm-normalize-package-bin@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" - integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== - -npm-package-arg@10.1.0, npm-package-arg@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" - integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== - dependencies: - hosted-git-info "^6.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-package-arg@^9.0.0, npm-package-arg@^9.0.1, npm-package-arg@^9.1.0: - version "9.1.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" - integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== - dependencies: - hosted-git-info "^5.0.0" - proc-log "^2.0.1" - semver "^7.3.5" - validate-npm-package-name "^4.0.0" - -npm-packlist@^5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" - integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== - dependencies: - glob "^8.0.1" - ignore-walk "^5.0.1" - npm-bundled "^2.0.0" - npm-normalize-package-bin "^2.0.0" - -npm-packlist@^7.0.0: - version "7.0.4" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" - integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== - dependencies: - ignore-walk "^6.0.0" - -npm-pick-manifest@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz#c6acd97d1ad4c5dbb80eac7b386b03ffeb289e5f" - integrity sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^10.0.0" - semver "^7.3.5" - -npm-pick-manifest@^7.0.0, npm-pick-manifest@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz#1d372b4e7ea7c6712316c0e99388a73ed3496e84" - integrity sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw== - dependencies: - npm-install-checks "^5.0.0" - npm-normalize-package-bin "^2.0.0" - npm-package-arg "^9.0.0" - semver "^7.3.5" - -npm-pick-manifest@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz#2159778d9c7360420c925c1a2287b5a884c713aa" - integrity sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^10.0.0" - semver "^7.3.5" - -npm-profile@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-6.2.1.tgz#975c31ec75a6ae029ab5b8820ffdcbae3a1e3d5e" - integrity sha512-Tlu13duByHyDd4Xy0PgroxzxnBYWbGGL5aZifNp8cx2DxUrHSoETXtPKg38aRPsBWMRfDtvcvVfJNasj7oImQQ== - dependencies: - npm-registry-fetch "^13.0.1" - proc-log "^2.0.0" - -npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3.1: - version "13.3.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" - integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== - dependencies: - make-fetch-happen "^10.0.6" - minipass "^3.1.6" - minipass-fetch "^2.0.3" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^9.0.1" - proc-log "^2.0.0" - -npm-registry-fetch@^14.0.0: - version "14.0.5" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" - integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== - dependencies: - make-fetch-happen "^11.0.0" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^10.0.0" - proc-log "^3.0.0" - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" - -npm-user-validate@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.1.tgz#31428fc5475fe8416023f178c0ab47935ad8c561" - integrity sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw== - -npm@^8.3.0: - version "8.19.4" - resolved "https://registry.yarnpkg.com/npm/-/npm-8.19.4.tgz#65ad6a2dfdd157a4ef4467fb86e8dcd35a43493f" - integrity sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw== - dependencies: - "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/arborist" "^5.6.3" - "@npmcli/ci-detect" "^2.0.0" - "@npmcli/config" "^4.2.1" - "@npmcli/fs" "^2.1.0" - "@npmcli/map-workspaces" "^2.0.3" - "@npmcli/package-json" "^2.0.0" - "@npmcli/run-script" "^4.2.1" - abbrev "~1.1.1" - archy "~1.0.0" - cacache "^16.1.3" - chalk "^4.1.2" - chownr "^2.0.0" - cli-columns "^4.0.0" - cli-table3 "^0.6.2" - columnify "^1.6.0" - fastest-levenshtein "^1.0.12" - fs-minipass "^2.1.0" - glob "^8.0.1" - graceful-fs "^4.2.10" - hosted-git-info "^5.2.1" - ini "^3.0.1" - init-package-json "^3.0.2" - is-cidr "^4.0.2" - json-parse-even-better-errors "^2.3.1" - libnpmaccess "^6.0.4" - libnpmdiff "^4.0.5" - libnpmexec "^4.0.14" - libnpmfund "^3.0.5" - libnpmhook "^8.0.4" - libnpmorg "^4.0.4" - libnpmpack "^4.1.3" - libnpmpublish "^6.0.5" - libnpmsearch "^5.0.4" - libnpmteam "^4.0.4" - libnpmversion "^3.0.7" - make-fetch-happen "^10.2.0" - minimatch "^5.1.0" - minipass "^3.1.6" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - mkdirp-infer-owner "^2.0.0" - ms "^2.1.2" - node-gyp "^9.1.0" - nopt "^6.0.0" - npm-audit-report "^3.0.0" - npm-install-checks "^5.0.0" - npm-package-arg "^9.1.0" - npm-pick-manifest "^7.0.2" - npm-profile "^6.2.0" - npm-registry-fetch "^13.3.1" - npm-user-validate "^1.0.1" - npmlog "^6.0.2" - opener "^1.5.2" - p-map "^4.0.0" - pacote "^13.6.2" - parse-conflict-json "^2.0.2" - proc-log "^2.0.1" - qrcode-terminal "^0.12.0" - read "~1.0.7" - read-package-json "^5.0.2" - read-package-json-fast "^2.0.3" - readdir-scoped-modules "^1.1.0" - rimraf "^3.0.2" - semver "^7.3.7" - ssri "^9.0.1" - tar "^6.1.11" - text-table "~0.2.0" - tiny-relative-date "^1.3.0" - treeverse "^2.0.0" - validate-npm-package-name "^4.0.0" - which "^2.0.2" - write-file-atomic "^4.0.1" - -npmlog@^6.0.0, npmlog@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -nwsapi@^2.2.2: - version "2.2.12" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" - integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== - -nx-cloud@16.0.5: - version "16.0.5" - resolved "https://registry.yarnpkg.com/nx-cloud/-/nx-cloud-16.0.5.tgz#fa0b0185d254405ec47fcbcdbbd8b12ff1add096" - integrity sha512-13P7r0aKikjBtmdZrNorwXzVPeVIV4MLEwqGY+DEG6doLBtI5KqEQk/d5B5l2dCF2BEi/LXEmLYCmf9gwbOJ+Q== - dependencies: - "@nrwl/nx-cloud" "16.0.5" - axios "1.1.3" - chalk "^4.1.0" - dotenv "~10.0.0" - fs-extra "^11.1.0" - node-machine-id "^1.1.12" - open "~8.4.0" - strip-json-comments "^3.1.1" - tar "6.1.11" - yargs-parser ">=21.1.1" - -nx@16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/nx/-/nx-16.0.0.tgz#6731fd7aa1a9f3edd4b489aabbe28d7d28ae06b2" - integrity sha512-ZqqXDqJL3gW1wqwuDXPDeCZZWWSQAi2TrhpK9X1oyCml2TixzMhFBXVF+WZebIw2TCE83T3kK0lHMo72UZTmNw== - dependencies: - "@nrwl/tao" "16.0.0" - "@parcel/watcher" "2.0.4" - "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "^3.0.0-rc.18" - "@zkochan/js-yaml" "0.0.6" - axios "^1.0.0" - chalk "^4.1.0" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^7.0.2" - dotenv "~10.0.0" - enquirer "~2.3.6" - fast-glob "3.2.7" - figures "3.2.0" - flat "^5.0.2" - fs-extra "^11.1.0" - glob "7.1.4" - ignore "^5.0.4" - js-yaml "4.1.0" - jsonc-parser "3.2.0" - lines-and-columns "~2.0.3" - minimatch "3.0.5" - npm-run-path "^4.0.1" - open "^8.4.0" - semver "7.3.4" - string-width "^4.2.3" - strong-log-transformer "^2.1.0" - tar-stream "~2.2.0" - tmp "~0.2.1" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - v8-compile-cache "2.3.0" - yargs "^17.6.2" - yargs-parser "21.1.1" - optionalDependencies: - "@nx/nx-darwin-arm64" "16.0.0" - "@nx/nx-darwin-x64" "16.0.0" - "@nx/nx-linux-arm-gnueabihf" "16.0.0" - "@nx/nx-linux-arm64-gnu" "16.0.0" - "@nx/nx-linux-arm64-musl" "16.0.0" - "@nx/nx-linux-x64-gnu" "16.0.0" - "@nx/nx-linux-x64-musl" "16.0.0" - "@nx/nx-win32-arm64-msvc" "16.0.0" - "@nx/nx-win32-x64-msvc" "16.0.0" - -nx@16.4.0: - version "16.4.0" - resolved "https://registry.yarnpkg.com/nx/-/nx-16.4.0.tgz#cd136a3ebadf77138dce421b0c0e0944527fe9b3" - integrity sha512-HhJnOAm2wlaIVMmxK1HcdcKfX5DlnQc1RAHFf+QostvQQ/SmUg9f7LoStxpNm01JhQTehb01tH9zAsXKcKzO4A== - dependencies: - "@nrwl/tao" "16.4.0" - "@parcel/watcher" "2.0.4" - "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "^3.0.0-rc.18" - "@zkochan/js-yaml" "0.0.6" - axios "^1.0.0" - chalk "^4.1.0" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^7.0.2" - dotenv "~10.0.0" - enquirer "~2.3.6" - fast-glob "3.2.7" - figures "3.2.0" - flat "^5.0.2" - fs-extra "^11.1.0" - glob "7.1.4" - ignore "^5.0.4" - js-yaml "4.1.0" - jsonc-parser "3.2.0" - lines-and-columns "~2.0.3" - minimatch "3.0.5" - npm-run-path "^4.0.1" - open "^8.4.0" - semver "7.5.3" - string-width "^4.2.3" - strong-log-transformer "^2.1.0" - tar-stream "~2.2.0" - tmp "~0.2.1" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - v8-compile-cache "2.3.0" - yargs "^17.6.2" - yargs-parser "21.1.1" - optionalDependencies: - "@nx/nx-darwin-arm64" "16.4.0" - "@nx/nx-darwin-x64" "16.4.0" - "@nx/nx-freebsd-x64" "16.4.0" - "@nx/nx-linux-arm-gnueabihf" "16.4.0" - "@nx/nx-linux-arm64-gnu" "16.4.0" - "@nx/nx-linux-arm64-musl" "16.4.0" - "@nx/nx-linux-x64-gnu" "16.4.0" - "@nx/nx-linux-x64-musl" "16.4.0" - "@nx/nx-win32-arm64-msvc" "16.4.0" - "@nx/nx-win32-x64-msvc" "16.4.0" - -obj-multiplex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/obj-multiplex/-/obj-multiplex-1.0.0.tgz#2f2ae6bfd4ae11befe742ea9ea5b36636eabffc1" - integrity sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA== - dependencies: - end-of-stream "^1.4.0" - once "^1.4.0" - readable-stream "^2.3.3" - -object-assign@^4.0.1, 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-inspect@^1.13.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== - -object-is@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" - integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - -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-keys@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67" - integrity sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA== - dependencies: - foreach "~2.0.1" - indexof "~0.0.1" - is "~0.2.6" - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== - -object.assign@^4.1.4, object.assign@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.6, object.entries@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" - integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -object.fromentries@^2.0.6, object.fromentries@^2.0.7, object.fromentries@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" - integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.groupby@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" - integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - -object.hasown@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" - integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== - dependencies: - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.values@^1.1.5, object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -octal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" - integrity sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ== - -ofetch@^1.3.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.3.4.tgz#7ea65ced3c592ec2b9906975ae3fe1d26a56f635" - integrity sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw== - dependencies: - destr "^2.0.3" - node-fetch-native "^1.6.3" - ufo "^1.5.3" - -ohash@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.3.tgz#f12c3c50bfe7271ce3fd1097d42568122ccdcf07" - integrity sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw== - -on-exit-leak-free@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" - integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -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, onetime@^5.1.2: - 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" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -open@8.4.2, open@^8.0.9, open@^8.4.0, open@~8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -opener@^1.5.1, opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -optionator@^0.9.1: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - 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.5" - -ora@5.4.1, 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" - -ora@^6.3.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-6.3.1.tgz#a4e9e5c2cf5ee73c259e8b410273e706a2ad3ed6" - integrity sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ== - dependencies: - chalk "^5.0.0" - cli-cursor "^4.0.0" - cli-spinners "^2.6.1" - is-interactive "^2.0.0" - is-unicode-supported "^1.1.0" - log-symbols "^5.1.0" - stdin-discarder "^0.1.0" - strip-ansi "^7.0.1" - wcwidth "^1.0.1" - -ordered-binary@^1.4.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.1.tgz#94ccbf14181711081ee23931db0dc3f58aaa0df6" - integrity sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A== - -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== - -ospath@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" - integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== - -p-defer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" - integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== - -p-defer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-4.0.1.tgz#d12c6d41420785ed0d162dbd86b71ba490f7f99e" - integrity sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A== - -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - -p-fifo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" - integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== - dependencies: - fast-fifo "^1.0.0" - p-defer "^3.0.0" - -p-filter@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" - integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== - dependencies: - p-map "^2.0.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-is-promise@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" - integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - 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-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== - dependencies: - p-limit "^1.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-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-queue@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-8.0.1.tgz#718b7f83836922ef213ddec263ff4223ce70bef8" - integrity sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA== - dependencies: - eventemitter3 "^5.0.1" - p-timeout "^6.1.2" - -p-reduce@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== - -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -p-timeout@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-6.1.2.tgz#22b8d8a78abf5e103030211c5fc6dee1166a6aa5" - integrity sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ== - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - -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== - -package-json-from-dist@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" - integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== - -pacote@15.2.0: - version "15.2.0" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-15.2.0.tgz#0f0dfcc3e60c7b39121b2ac612bf8596e95344d3" - integrity sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA== - dependencies: - "@npmcli/git" "^4.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/promise-spawn" "^6.0.1" - "@npmcli/run-script" "^6.0.0" - cacache "^17.0.0" - fs-minipass "^3.0.0" - minipass "^5.0.0" - npm-package-arg "^10.0.0" - npm-packlist "^7.0.0" - npm-pick-manifest "^8.0.0" - npm-registry-fetch "^14.0.0" - proc-log "^3.0.0" - promise-retry "^2.0.1" - read-package-json "^6.0.0" - read-package-json-fast "^3.0.0" - sigstore "^1.3.0" - ssri "^10.0.0" - tar "^6.1.11" - -pacote@^13.0.3, pacote@^13.6.1, pacote@^13.6.2: - version "13.6.2" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.2.tgz#0d444ba3618ab3e5cd330b451c22967bbd0ca48a" - integrity sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg== - dependencies: - "@npmcli/git" "^3.0.0" - "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/promise-spawn" "^3.0.0" - "@npmcli/run-script" "^4.1.0" - cacache "^16.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.6" - mkdirp "^1.0.4" - npm-package-arg "^9.0.0" - npm-packlist "^5.1.0" - npm-pick-manifest "^7.0.0" - npm-registry-fetch "^13.0.1" - proc-log "^2.0.0" - promise-retry "^2.0.1" - read-package-json "^5.0.0" - read-package-json-fast "^2.0.3" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - -pako@^1.0.3: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parcel@^2.9.3: - version "2.12.0" - resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.12.0.tgz#60529c268c2ce0754b225af835f1519da1364298" - integrity sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg== - dependencies: - "@parcel/config-default" "2.12.0" - "@parcel/core" "2.12.0" - "@parcel/diagnostic" "2.12.0" - "@parcel/events" "2.12.0" - "@parcel/fs" "2.12.0" - "@parcel/logger" "2.12.0" - "@parcel/package-manager" "2.12.0" - "@parcel/reporter-cli" "2.12.0" - "@parcel/reporter-dev-server" "2.12.0" - "@parcel/reporter-tracer" "2.12.0" - "@parcel/utils" "2.12.0" - chalk "^4.1.0" - commander "^7.0.0" - get-port "^4.2.0" - -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-asn1@^5.0.0, parse-asn1@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" - integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== - dependencies: - asn1.js "^4.10.1" - browserify-aes "^1.2.0" - evp_bytestokey "^1.0.3" - hash-base "~3.0" - pbkdf2 "^3.1.2" - safe-buffer "^5.2.1" - -parse-conflict-json@^2.0.1, parse-conflict-json@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz#3d05bc8ffe07d39600dc6436c6aefe382033d323" - integrity sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== - dependencies: - json-parse-even-better-errors "^2.3.1" - just-diff "^5.0.1" - just-diff-apply "^5.2.0" - -parse-duration@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" - integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== - -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, parse-json@^5.2.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" - -parse-json@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-7.1.1.tgz#68f7e6f0edf88c54ab14c00eb700b753b14e2120" - integrity sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw== - dependencies: - "@babel/code-frame" "^7.21.4" - error-ex "^1.3.2" - json-parse-even-better-errors "^3.0.0" - lines-and-columns "^2.0.3" - type-fest "^3.8.0" - -parse-node-version@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse5-html-rewriting-stream@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz#e376d3e762d2950ccbb6bb59823fc1d7e9fdac36" - integrity sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg== - dependencies: - entities "^4.3.0" - parse5 "^7.0.0" - parse5-sax-parser "^7.0.0" - -parse5-sax-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz#4c05064254f0488676aca75fb39ca069ec96dee5" - integrity sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg== - dependencies: - parse5 "^7.0.0" - -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - -parse5@^7.0.0, parse5@^7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-browserify@1.0.1, path-browserify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" - integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -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-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - -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@^3.0.0, 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-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -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-scurry@^1.10.1, path-scurry@^1.11.1, path-scurry@^1.6.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -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== - -pathe@^1.1.1, pathe@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" - integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== - -pbkdf2@^3.0.3, pbkdf2@^3.0.9, pbkdf2@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -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== - -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - -picomatch@2.3.1, picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -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== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - -pino-abstract-transport@v0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" - integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== - dependencies: - duplexify "^4.1.2" - split2 "^4.0.0" - -pino-std-serializers@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" - integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== - -pino@7.11.0: - version "7.11.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" - integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg== - dependencies: - atomic-sleep "^1.0.0" - fast-redact "^3.0.0" - on-exit-leak-free "^0.2.0" - pino-abstract-transport v0.5.0 - pino-std-serializers "^4.0.0" - process-warning "^1.0.0" - quick-format-unescaped "^4.0.3" - real-require "^0.1.0" - safe-stable-stringify "^2.1.0" - sonic-boom "^2.2.1" - thread-stream "^0.15.1" - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -piscina@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.2.0.tgz#f5a1dde0c05567775690cccefe59d9223924d154" - integrity sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA== - dependencies: - eventemitter-asyncresource "^1.0.0" - hdr-histogram-js "^2.0.1" - hdr-histogram-percentiles-obj "^3.0.0" - optionalDependencies: - nice-napi "^1.0.2" - -pkg-conf@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" - integrity sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g== - dependencies: - find-up "^2.0.0" - load-json-file "^4.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - -pkg-types@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.3.tgz#161bb1242b21daf7795036803f28e30222e476e3" - integrity sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA== - dependencies: - confbox "^0.1.7" - mlly "^1.7.1" - pathe "^1.1.2" - -pngjs@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" - integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== - -pony-cause@^2.1.10: - version "2.1.11" - resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.11.tgz#d69a20aaccdb3bdb8f74dd59e5c68d8e6772e4bd" - integrity sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg== - -portfinder@^1.0.28: - version "1.0.32" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" - integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== - dependencies: - async "^2.6.4" - debug "^3.2.7" - mkdirp "^0.5.6" - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-calc@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" - integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== - dependencies: - postcss-selector-parser "^6.0.11" - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-colormin@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d" - integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== - dependencies: - browserslist "^4.23.0" - caniuse-api "^3.0.0" - colord "^2.9.3" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#3498387f8efedb817cbc63901d45bd1ceaa40f48" - integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== - dependencies: - browserslist "^4.23.0" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-comments@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" - integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-duplicates@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#d121e893c38dc58a67277f75bb58ba43fce4c3eb" - integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-empty@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#ee39c327219bb70473a066f772621f81435a79d9" - integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - -postcss-discard-overridden@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#4e9f9c62ecd2df46e8fdb44dc17e189776572e2d" - integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== - -postcss-import@~14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" - integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-load-config@^3.0.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" - integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== - dependencies: - lilconfig "^2.0.5" - yaml "^1.10.2" - -postcss-loader@7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.2.tgz#ac3344ad1f14bb65df135744b7efae4dbdad4301" - integrity sha512-c7qDlXErX6n0VT+LUsW+nwefVtTu3ORtVvK8EXuUIDcxo+b/euYqpuHlJAvePb0Af5e8uMjR/13e0lTuYifaig== - dependencies: - cosmiconfig "^8.1.3" - jiti "^1.18.2" - klona "^2.0.6" - semver "^7.3.8" - -postcss-loader@^6.1.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== - dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.5" - -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" - -postcss-merge-longhand@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#ba8a8d473617c34a36abbea8dda2b215750a065a" - integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^6.1.1" - -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-merge-rules@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#7aa539dceddab56019469c0edd7d22b64c3dea9d" - integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== - dependencies: - browserslist "^4.23.0" - caniuse-api "^3.0.0" - cssnano-utils "^4.0.2" - postcss-selector-parser "^6.0.16" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-font-values@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#a0e574c02ee3f299be2846369211f3b957ea4c59" - integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#ca3eb55a7bdb48a1e187a55c6377be918743dbd6" - integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== - dependencies: - colord "^2.9.3" - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#54551dec77b9a45a29c3cb5953bf7325a399ba08" - integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== - dependencies: - browserslist "^4.23.0" - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-minify-selectors@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#197f7d72e6dd19eed47916d575d69dc38b396aff" - integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== - dependencies: - postcss-selector-parser "^6.0.16" - -postcss-modules-extract-imports@^3.0.0, postcss-modules-extract-imports@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" - integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== - -postcss-modules-local-by-default@^4.0.0, postcss-modules-local-by-default@^4.0.3, postcss-modules-local-by-default@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" - integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0, postcss-modules-scope@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" - integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-modules@^4.0.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.3.1.tgz#517c06c09eab07d133ae0effca2c510abba18048" - integrity sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q== - dependencies: - generic-names "^4.0.0" - icss-replace-symbols "^1.1.0" - lodash.camelcase "^4.3.0" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - string-hash "^1.1.1" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-charset@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1" - integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-display-values@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#54f02764fed0b288d5363cbb140d6950dbbdd535" - integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#e982d284ec878b9b819796266f640852dbbb723a" - integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#f8006942fd0617c73f049dd8b6201c3a3040ecf3" - integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#e3cc6ad5c95581acd1fc8774b309dd7c06e5e363" - integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#40cb8726cef999de984527cbd9d1db1f3e9062c0" - integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#aaf8bbd34c306e230777e80f7f12a4b7d27ce06e" - integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== - dependencies: - browserslist "^4.23.0" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#292792386be51a8de9a454cb7b5c58ae22db0f79" - integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#fbb009e6ebd312f8b2efb225c2fcc7cf32b400cd" - integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5" - integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== - dependencies: - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" - -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - -postcss-reduce-initial@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#4401297d8e35cb6e92c8e9586963e267105586ba" - integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== - dependencies: - browserslist "^4.23.0" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-reduce-transforms@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#6fa2c586bdc091a7373caeee4be75a0f3e12965d" - integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53" - integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: - version "6.0.16" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" - integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-svgo@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.3.tgz#1d6e180d6df1fa8a3b30b729aaa9161e94f04eaa" - integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^3.2.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-unique-selectors@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#983ab308896b4bf3f2baaf2336e14e52c11a2088" - integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== - dependencies: - postcss-selector-parser "^6.0.16" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@8.4.14: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@8.4.24: - version "8.4.24" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" - integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.2.14, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.33: - version "8.4.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3" - integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" - -postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24: - version "8.4.38" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.2.0" - -posthtml-parser@^0.10.1: - version "0.10.2" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" - integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-parser@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" - integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-render@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" - integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== - dependencies: - is-json "^2.0.1" - -posthtml@^0.16.4, posthtml@^0.16.5: - version "0.16.6" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" - integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== - dependencies: - posthtml-parser "^0.11.0" - posthtml-render "^3.0.0" - -postmate@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/postmate/-/postmate-1.5.2.tgz#d59a78b3780023c5d32225fd40633b364958bdb3" - integrity sha512-EHLlEmrUA/hALls49oBrtE7BzDXXjB9EiO4MZpsoO3R/jRuBmD+2WKQuYAbeuVEpTzrPpUTT79z2cz4qaFgPRg== - -preact@^10.16.0: - version "10.20.2" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.20.2.tgz#0b343299a8c020562311cc25db93b3d832ec5e71" - integrity sha512-S1d1ernz3KQ+Y2awUxKakpfOg2CEmJmwOP+6igPx6dgr6pgDvenqYviyokWso2rhHvGtTlWWnJDa7RaPbQerTg== - -prebuild-install@^7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" - integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ== - dependencies: - detect-libc "^2.0.0" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^3.3.0" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^4.0.0" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - -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== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -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== - -pretty-bytes@^5.3.0, pretty-bytes@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-format@^27.0.2: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -proc-log@^2.0.0, proc-log@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" - integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== - -proc-log@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" - integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== - -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-warning@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" - integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== - -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-events@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.0.1.tgz#693b6d4153f08c1418ae3cd5fcad8596c91db7e8" - integrity sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw== - -promise-all-reject-late@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" - integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== - -promise-call-limit@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.2.tgz#f64b8dd9ef7693c9c7613e7dfe8d6d24de3031ea" - integrity sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -promise.series@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" - integrity sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ== - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== - dependencies: - read "1" - -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== - -protobufjs@^7.0.0: - version "7.3.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.2.tgz#60f3b7624968868f6f739430cfbc8c9370e26df4" - integrity sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-compare@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" - integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== - -proxy-from-env@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== - -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== - -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - integrity sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ== - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -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@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - -q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== - -qr-code-styling@^1.6.0-rc.1: - version "1.6.0-rc.1" - resolved "https://registry.yarnpkg.com/qr-code-styling/-/qr-code-styling-1.6.0-rc.1.tgz#6c89e185fa50cc9135101085c12ae95b06f1b290" - integrity sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q== - dependencies: - qrcode-generator "^1.4.3" - -qr.js@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f" - integrity sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ== - -qrcode-generator@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode-generator/-/qrcode-generator-1.4.4.tgz#63f771224854759329a99048806a53ed278740e7" - integrity sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw== - -qrcode-terminal-nooctal@^0.12.1: - version "0.12.1" - resolved "https://registry.yarnpkg.com/qrcode-terminal-nooctal/-/qrcode-terminal-nooctal-0.12.1.tgz#45016aca0d82b2818de7af0a06d072ad671fbe2e" - integrity sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg== - -qrcode-terminal@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" - integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== - -qrcode@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" - integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== - dependencies: - dijkstrajs "^1.0.1" - encode-utf8 "^1.0.3" - pngjs "^5.0.0" - yargs "^15.3.1" - -qrcode@1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.4.tgz#5cb81d86eb57c675febb08cf007fff963405da88" - integrity sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg== - dependencies: - dijkstrajs "^1.0.1" - pngjs "^5.0.0" - yargs "^15.3.1" - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@^6.4.0: - version "6.12.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.3.tgz#e43ce03c8521b9c7fd7f1f13e514e5ca37727754" - integrity sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ== - dependencies: - side-channel "^1.0.6" - -qs@~6.10.3: - version "6.10.5" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== - dependencies: - side-channel "^1.0.4" - -query-string@7.1.3, query-string@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" - integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== - dependencies: - decode-uri-component "^0.2.2" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== - -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== - -quick-format-unescaped@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" - integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -radix3@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" - integrity sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA== - -randombytes@2.1.0, randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@1.2.8, rc@^1.2.7, rc@^1.2.8: - 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-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-error-boundary@^3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" - integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== - dependencies: - "@babel/runtime" "^7.12.5" - -react-error-overlay@6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== - -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -react-is@^16.13.1: - 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-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-native-fetch-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" - integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== - dependencies: - p-defer "^3.0.0" - -react-native-webview@^11.26.0: - version "11.26.1" - resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" - integrity sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw== - dependencies: - escape-string-regexp "2.0.0" - invariant "2.2.4" - -react-qr-code@2.0.15: - version "2.0.15" - resolved "https://registry.yarnpkg.com/react-qr-code/-/react-qr-code-2.0.15.tgz#fbfc12952c504bcd64275647e9d1ea63251742ce" - integrity sha512-MkZcjEXqVKqXEIMVE0mbcGgDpkfSdd8zhuzXEl9QzYeNcw8Hq2oVIzDLWuZN2PQBwM5PWjc2S31K8Q1UbcFMfw== - dependencies: - prop-types "^15.8.1" - qr.js "0.0.0" - -react-refresh@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.10.0.tgz#2f536c9660c0b9b1d500684d9e52a65e7404f7e3" - integrity sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ== - -react-refresh@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" - integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== - -react-shallow-renderer@^16.15.0: - version "16.15.0" - resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" - integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== - dependencies: - object-assign "^4.1.1" - react-is "^16.12.0 || ^17.0.0 || ^18.0.0" - -react-test-renderer@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.2.0.tgz#1dd912bd908ff26da5b9fca4fd1c489b9523d37e" - integrity sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA== - dependencies: - react-is "^18.2.0" - react-shallow-renderer "^16.15.0" - scheduler "^0.23.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-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - -read-cmd-shim@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz#868c235ec59d1de2db69e11aec885bc095aea087" - integrity sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g== - -read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" - integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json-fast@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" - integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== - dependencies: - json-parse-even-better-errors "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -read-package-json@^5.0.0, read-package-json@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" - integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== - dependencies: - glob "^8.0.1" - json-parse-even-better-errors "^2.3.1" - normalize-package-data "^4.0.0" - npm-normalize-package-bin "^2.0.0" - -read-package-json@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-6.0.4.tgz#90318824ec456c287437ea79595f4c2854708836" - integrity sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== - dependencies: - glob "^10.2.2" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^5.0.0" - npm-normalize-package-bin "^3.0.0" - -read-pkg-up@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-10.1.0.tgz#2d13ab732d2f05d6e8094167c2112e2ee50644f4" - integrity sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA== - dependencies: - find-up "^6.3.0" - read-pkg "^8.1.0" - type-fest "^4.2.0" - -read-pkg-up@^7.0.0, read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.0.0, read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read-pkg@^8.0.0, read-pkg@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-8.1.0.tgz#6cf560b91d90df68bce658527e7e3eee75f7c4c7" - integrity sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ== - dependencies: - "@types/normalize-package-data" "^2.4.1" - normalize-package-data "^6.0.0" - parse-json "^7.0.0" - type-fest "^4.2.0" - -read@1, read@^1.0.7, read@~1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== - dependencies: - mute-stream "~0.0.4" - -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0, readable-stream@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^1.0.26-4: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.8, readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - 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.6.2 || ^4.4.2": - version "4.5.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" - integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== - dependencies: - abort-controller "^3.0.0" - buffer "^6.0.3" - events "^3.3.0" - process "^0.11.10" - string_decoder "^1.3.0" - -readable-stream@~1.0.26, readable-stream@~1.0.26-4: - 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" - -readdir-scoped-modules@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - -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" - -real-require@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" - integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== - -receptacle@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" - integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== - dependencies: - ms "^2.1.1" - -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -redeyed@~2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" - integrity sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ== - dependencies: - esprima "~4.0.0" - -reflect-metadata@^0.1.2: - version "0.1.14" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859" - integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== - -reflect.getprototypeof@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" - integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.1" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@0.14.1, regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-parser@^2.2.11: - version "2.3.0" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.0.tgz#4bb61461b1a19b8b913f3960364bb57887f920ee" - integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== - -regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== - dependencies: - call-bind "^1.0.6" - define-properties "^1.2.1" - es-errors "^1.3.0" - set-function-name "^2.0.1" - -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== - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -registry-auth-token@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.2.tgz#f02d49c3668884612ca031419491a13539e21fac" - integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== - dependencies: - rc "1.2.8" - -registry-auth-token@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" - integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== - dependencies: - "@pnpm/npm-conf" "^2.1.0" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -request-progress@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" - integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg== - dependencies: - throttleit "^1.0.0" - -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-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -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== - -requizzle@^0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.4.tgz#319eb658b28c370f0c20f968fa8ceab98c13d27c" - integrity sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw== - dependencies: - lodash "^4.17.21" - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -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-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -resolve-url-loader@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz#ee3142fb1f1e0d9db9524d539cfa166e9314f795" - integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== - dependencies: - adjust-sourcemap-loader "^4.0.0" - convert-source-map "^1.7.0" - loader-utils "^2.0.0" - postcss "^8.2.14" - source-map "0.6.1" - -resolve.exports@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@1.22.2: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== - dependencies: - is-core-module "^2.11.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.3, resolve@^2.0.0-next.5: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== - dependencies: - is-core-module "^2.13.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.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" - -restore-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" - integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -retimer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" - integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -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== - -rfdc@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" - integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== - -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" - -rimraf@^4.1.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" - integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== - dependencies: - glob "^9.2.0" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup-plugin-copy@^3.4.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz#7ffa2a7a8303e143876fa64fb5eed9022d304eeb" - integrity sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA== - dependencies: - "@types/fs-extra" "^8.0.1" - colorette "^1.1.0" - fs-extra "^8.1.0" - globby "10.0.1" - is-plain-object "^3.0.0" - -rollup-plugin-peer-deps-external@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz#8a420bbfd6dccc30aeb68c9bf57011f2f109570d" - integrity sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g== - -rollup-plugin-postcss@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz#15e9462f39475059b368ce0e49c800fa4b1f7050" - integrity sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w== - dependencies: - chalk "^4.1.0" - concat-with-sourcemaps "^1.1.0" - cssnano "^5.0.1" - import-cwd "^3.0.0" - p-queue "^6.6.2" - pify "^5.0.0" - postcss-load-config "^3.0.0" - postcss-modules "^4.0.0" - promise.series "^0.2.0" - resolve "^1.19.0" - rollup-pluginutils "^2.8.2" - safe-identifier "^0.4.2" - style-inject "^0.3.0" - -rollup-plugin-typescript2@0.34.1: - version "0.34.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.34.1.tgz#c457f155a71d133c142689213fce78694e30d0be" - integrity sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw== - dependencies: - "@rollup/pluginutils" "^4.1.2" - find-cache-dir "^3.3.2" - fs-extra "^10.0.0" - semver "^7.3.7" - tslib "^2.4.0" - -rollup-plugin-visualizer@^5.9.2: - version "5.12.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302" - integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== - dependencies: - open "^8.4.0" - picomatch "^2.3.1" - source-map "^0.7.4" - yargs "^17.5.1" - -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^2.56.2: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== - optionalDependencies: - fsevents "~2.3.2" - -rollup@^3.21.0, rollup@^3.29.2: - version "3.29.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" - integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== - 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@6.6.7, rxjs@^6.5.4: - 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.8.1, rxjs@^7.5.1, rxjs@^7.5.5, rxjs@^7.8.0, rxjs@^7.8.1: - version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@5.1.2, 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-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, 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-identifier@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" - integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== - -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-regex "^1.1.4" - -safe-stable-stringify@^2.1.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - -"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.2, 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== - -sass-loader@13.3.1: - version "13.3.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.3.1.tgz#32ee5791434b9b4dbd1adcce76fcb4cea49cc12c" - integrity sha512-cBTxmgyVA1nXPvIK4brjJMXOMJ2v2YrQEuHqLw3LylGb3gsR6jAvdjHMcy/+JGTmmIF9SauTrLLR7bsWDMWqgg== - dependencies: - klona "^2.0.6" - neo-async "^2.6.2" - -sass-loader@^12.2.0: - version "12.6.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" - integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== - dependencies: - klona "^2.0.4" - neo-async "^2.6.2" - -sass@1.55.0: - version "1.55.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.55.0.tgz#0c4d3c293cfe8f8a2e8d3b666e1cf1bff8065d1c" - integrity sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sass@1.63.2: - version "1.63.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.2.tgz#75f7d9a8e67d1d5b98a989507f4d98b6067b1f75" - integrity sha512-u56TU0AIFqMtauKl/OJ1AeFsXqRHkgO7nCWmHaDwfxDo9GUMSqBA4NEh6GMuh1CYVM7zuROYtZrHzPc2ixK+ww== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sass@^1.42.1: - version "1.77.7" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.7.tgz#ef3520edc8f59da089f25891d8a6bebf93668ee0" - integrity sha512-9ywH75cO+rLjbrZ6en3Gp8qAMwPGBapFtlsMJoDTkcMU/bSe5a6cjKVUn5Jr4Gzg5GbP3HE8cm+02pLCgcoMow== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sax@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== - -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== - -saxes@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" - integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.23.0: - version "0.23.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" - integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== - dependencies: - loose-envify "^1.1.0" - -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1, schema-utils@^3.1.2, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0, schema-utils@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@5.0.0, secp256k1@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.0.tgz#be6f0c8c7722e2481e9773336d351de8cddd12f7" - integrity sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^5.0.0" - node-gyp-build "^4.2.0" - -secure-compare@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" - integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^2.1.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" - -semantic-release@19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-19.0.2.tgz#6011683c06d7b416e5faa5a3f43b22bbf3798aa8" - integrity sha512-7tPonjZxukKECmClhsfyMKDt0GR38feIC2HxgyYaBi+9tDySBLjK/zYDLhh+m6yjnHIJa9eBTKYE7k63ZQcYbw== - dependencies: - "@semantic-release/commit-analyzer" "^9.0.2" - "@semantic-release/error" "^3.0.0" - "@semantic-release/github" "^8.0.0" - "@semantic-release/npm" "^9.0.0" - "@semantic-release/release-notes-generator" "^10.0.0" - aggregate-error "^3.0.0" - cosmiconfig "^7.0.0" - debug "^4.0.0" - env-ci "^5.0.0" - execa "^5.0.0" - figures "^3.0.0" - find-versions "^4.0.0" - get-stream "^6.0.0" - git-log-parser "^1.2.0" - hook-std "^2.0.0" - hosted-git-info "^4.0.0" - lodash "^4.17.21" - marked "^4.0.10" - marked-terminal "^5.0.0" - micromatch "^4.0.2" - p-each-series "^2.1.0" - p-reduce "^2.0.0" - read-pkg-up "^7.0.0" - resolve-from "^5.0.0" - semver "^7.3.2" - semver-diff "^3.1.1" - signale "^1.2.1" - yargs "^16.2.0" - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -semver-regex@^3.1.2: - version "3.1.4" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.4.tgz#13053c0d4aa11d070a2f2872b6b1e3ae1e1971b4" - integrity sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA== - -"semver@2 || 3 || 4 || 5", semver@^5.6.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@7.3.4: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -semver@7.5.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" - integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== - dependencies: - lru-cache "^6.0.0" - -semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.5.4: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" - -semver@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" - integrity sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -sentence-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" - integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -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== - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -set-function-name@^2.0.1, set-function-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" - integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.2" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha1@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" - integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== - dependencies: - charenc ">= 0.0.1" - crypt ">= 0.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -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@^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.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -side-channel@^1.0.4, side-channel@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - 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== - -signal-exit@^4.0.1, signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -signale@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1" - integrity sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w== - dependencies: - chalk "^2.3.2" - figures "^2.0.0" - pkg-conf "^2.1.0" - -sigstore@^1.3.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" - integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== - dependencies: - "@sigstore/bundle" "^1.1.0" - "@sigstore/protobuf-specs" "^0.2.0" - "@sigstore/sign" "^1.0.0" - "@sigstore/tuf" "^1.0.3" - make-fetch-happen "^11.0.1" - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== - dependencies: - decompress-response "^6.0.0" - once "^1.3.1" - simple-concat "^1.0.0" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -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" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slugify@^1.6.5: - version "1.6.6" - resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.6.tgz#2d4ac0eacb47add6af9e04d3be79319cbcc7924b" - integrity sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw== - -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -socket.io-client@^4.5.1: - version "4.7.5" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.5.tgz#919be76916989758bdc20eec63f7ee0ae45c05b7" - integrity sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.2" - engine.io-client "~6.5.2" - socket.io-parser "~4.2.4" - -socket.io-parser@~4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" - integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" - -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.3.3, socks@^2.6.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" - integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== - dependencies: - ip-address "^9.0.5" - smart-buffer "^4.2.0" - -sonic-boom@^2.2.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" - integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== - dependencies: - atomic-sleep "^1.0.0" - -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== - -source-map-loader@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2" - integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA== - dependencies: - abab "^2.0.6" - iconv-lite "^0.6.3" - source-map-js "^1.0.2" - -source-map-loader@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" - integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== - dependencies: - abab "^2.0.5" - iconv-lite "^0.6.3" - source-map-js "^1.0.1" - -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@0.5.21, source-map-support@^0.5.5, source-map-support@~0.5.20: - 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.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@0.7.4, source-map@^0.7.3, source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -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-error-forwarder@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz#1afd94738e999b0346d7b9fc373be55e07577029" - integrity sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -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.18" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" - integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split2@^3.0.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -split2@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" - integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== - -split2@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-1.0.0.tgz#52e2e221d88c75f9a73f90556e263ff96772b314" - integrity sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg== - dependencies: - through2 "~2.0.0" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - -sprintf-js@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" - integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -srcset@4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" - integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== - -sshpk@^1.14.1: - version "1.18.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" - integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== - 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" - -ssri@^10.0.0: - version "10.0.6" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" - integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== - dependencies: - minipass "^7.0.3" - -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -ssri@^9.0.0, ssri@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -std-env@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" - integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== - -stdin-discarder@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz#22b3e400393a8e28ebf53f9958f3880622efde21" - integrity sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ== - dependencies: - bl "^5.0.0" - -stop-iteration-iterator@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" - integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== - dependencies: - internal-slot "^1.0.4" - -stream-browserify@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" - integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== - dependencies: - inherits "~2.0.4" - readable-stream "^3.5.0" - -stream-combiner2@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - integrity sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw== - dependencies: - duplexer2 "~0.1.0" - readable-stream "^2.0.2" - -stream-http@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" - integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.4" - readable-stream "^3.6.0" - xtend "^4.0.2" - -stream-shift@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" - integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== - -stream-to-it@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" - integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== - dependencies: - get-iterator "^1.0.2" - -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - -string-hash@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-range@~1.2, string-range@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" - integrity sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w== - -"string-width-cjs@npm:string-width@^4.2.0": - 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-width@^1.0.2 || 2 || 3 || 4", 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-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.includes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f" - integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.matchall@^4.0.11, string.prototype.matchall@^4.0.8: - version "4.0.11" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" - integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - regexp.prototype.flags "^1.5.2" - set-function-name "^2.0.2" - side-channel "^1.0.6" - -string.prototype.repeat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a" - integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-object-atoms "^1.0.0" - -string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string_decoder@^1.1.1, string_decoder@^1.3.0: - 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-cjs@npm: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-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-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.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-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -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== - -strip-outer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" - integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== - dependencies: - escape-string-regexp "^1.0.2" - -strong-log-transformer@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" - -style-inject@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" - integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== - -style-loader@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.0.tgz#d66ea95fc50b22f8b79b69a9e414760fcf58d8d8" - integrity sha512-szANub7ksJtQioJYtpbWwh1hUl99uK15n5HDlikeCRil/zYMZgSxucHddyF/4A3qJMUiAjPhFowrrQuNMA7jwQ== - -style-loader@^3.3.0: - version "3.3.4" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" - integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== - -styled-jsx@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" - integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== - dependencies: - client-only "0.0.1" - -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - -stylehacks@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6" - integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== - dependencies: - browserslist "^4.23.0" - postcss-selector-parser "^6.0.16" - -stylus-loader@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-7.1.0.tgz#19e09a98b19075c246e6e3f65e38b8cb89d2d6fb" - integrity sha512-gNUEjjozR+oZ8cuC/Fx4LVXqZOgDKvpW9t2hpXHcxjfPYqSjQftaGwZUK+wL9B0QJ26uS6p1EmoWHmvld1dF7g== - dependencies: - fast-glob "^3.2.12" - klona "^2.0.5" - normalize-path "^3.0.0" - -stylus-loader@^7.1.0: - version "7.1.3" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-7.1.3.tgz#1fdfa0d34e8c05a569bc0902e1ecdb857d764964" - integrity sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw== - dependencies: - fast-glob "^3.2.12" - normalize-path "^3.0.0" - -stylus@0.55.0, stylus@^0.55.0: - version "0.55.0" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.55.0.tgz#bd404a36dd93fa87744a9dd2d2b1b8450345e5fc" - integrity sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw== - dependencies: - css "^3.0.0" - debug "~3.1.0" - glob "^7.1.6" - mkdirp "~1.0.4" - safer-buffer "^2.1.2" - sax "~1.2.4" - semver "^6.3.0" - source-map "^0.7.3" - -stylus@^0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.59.0.tgz#a344d5932787142a141946536d6e24e6a6be7aa6" - integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== - dependencies: - "@adobe/css-tools" "^4.0.1" - debug "^4.3.2" - glob "^7.1.6" - sax "~1.2.4" - source-map "^0.7.3" - -superstruct@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca" - integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ== - -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.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.0.0, supports-color@^8.1.1: - 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-hyperlinks@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.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== - -sver@^1.8.4: - version "1.8.4" - resolved "https://registry.yarnpkg.com/sver/-/sver-1.8.4.tgz#9bd6f6265263f01aab152df935dc7a554c15673f" - integrity sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA== - optionalDependencies: - semver "^6.3.0" - -svg-parser@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^2.4.0, svgo@^2.7.0, svgo@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -svgo@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.2.0.tgz#7a5dff2938d8c6096e00295c2390e8e652fa805d" - integrity sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^5.1.0" - css-tree "^2.3.1" - css-what "^6.1.0" - csso "^5.0.5" - picocolors "^1.0.0" - -symbol-observable@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -system-architecture@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d" - integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA== - -tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar-fs@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4, tar-stream@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^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" - -tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -tempy@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de" - integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== - dependencies: - del "^6.0.0" - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -term-size@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.3: - version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser-webpack-plugin@^5.3.7: - version "5.3.9" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" - integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.8" - -terser@5.17.7: - version "5.17.7" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.7.tgz#2a8b134826fe179b711969fd9d9a0c2479b2a8c3" - integrity sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -terser@^5.16.8: - version "5.31.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.3.tgz#b24b7beb46062f4653f049eea4f0cd165d0f0c38" - integrity sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -terser@^5.26.0: - version "5.30.4" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.4.tgz#62b4d16a819424e6317fd5ceffb4ee8dc769803a" - integrity sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-encoding-utf-8@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" - integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== - -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - -text-extensions@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34" - integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== - -text-table@0.2.0, text-table@^0.2.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== - -thread-stream@^0.15.1: - version "0.15.2" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4" - integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA== - dependencies: - real-require "^0.1.0" - -throttleit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.1.tgz#304ec51631c3b770c65c6c6f76938b384000f4d5" - integrity sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ== - -through2@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" - -through2@~2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timeout-abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" - integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== - dependencies: - retimer "^3.0.0" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== - -tiny-relative-date@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" - integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== - -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.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" - integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -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-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== - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tough-cookie@^4.1.2, tough-cookie@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" - integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== - dependencies: - 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.6.8: - version "0.6.8" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.8.tgz#5e5e0c41878b57e4b73ad2f3d1e36a715ea4ab15" - integrity sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA== - -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== - -treeverse@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-2.0.0.tgz#036dcef04bc3fd79a9b79a68d4da03e882d8a9ca" - integrity sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A== - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -trim-repeated@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" - integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg== - dependencies: - escape-string-regexp "^1.0.2" - -"true-myth@^4.1.0": - version "4.1.1" - resolved "https://registry.yarnpkg.com/true-myth/-/true-myth-4.1.1.tgz#ff4ac9d5130276e34aa338757e2416ec19248ba2" - integrity sha512-rqy30BSpxPznbbTcAcci90oZ1YR4DqvKcNXNerG5gQBU2v4jk0cygheiul5J6ExIMrgDVuanv/MkGfqZbKrNNg== - -ts-api-utils@^1.0.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - -ts-essentials@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-jest@29.1.0: - version "29.1.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.0.tgz#4a9db4104a49b76d2b368ea775b6c9535c603891" - integrity sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "^21.0.1" - -ts-jest@^29.0.0: - version "29.2.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.1.tgz#9a460bb27446d141c48a17cf24f060dbe9b58254" - integrity sha512-7obwtH5gw0b0XZi0wmprCSvGSvHliMBI47lPnU47vmbxWS6B+v1X94yWFo1f1vt9k/he+gttsrXjkxmgY41XNQ== - dependencies: - bs-logger "0.x" - ejs "^3.0.0" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "^7.5.3" - yargs-parser "^21.0.1" - -ts-loader@^9.3.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" - integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - source-map "^0.7.4" - -ts-morph@^13.0.1: - version "13.0.3" - resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-13.0.3.tgz#c0c51d1273ae2edb46d76f65161eb9d763444c1d" - integrity sha512-pSOfUMx8Ld/WUreoSzvMFQG5i9uEiWIsBYjpU9+TTASOeUa89j5HykomeqVULm1oqWtBdleI3KEFRLrlA3zGIw== - dependencies: - "@ts-morph/common" "~0.12.3" - code-block-writer "^11.0.0" - -ts-node@10.9.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - 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" - -ts-prune@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/ts-prune/-/ts-prune-0.10.3.tgz#b6c71a525543b38dcf947a7d3adfb7f9e8b91f38" - integrity sha512-iS47YTbdIcvN8Nh/1BFyziyUqmjXz7GVzWu02RaZXqb+e/3Qe1B7IQ4860krOeCGUeJmterAlaM2FRH0Ue0hjw== - dependencies: - commander "^6.2.1" - cosmiconfig "^7.0.1" - json5 "^2.1.3" - lodash "^4.17.21" - "true-myth" "^4.1.0" - ts-morph "^13.0.1" - -tsconfig-paths-webpack-plugin@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz#84008fc3e3e0658fdb0262758b07b4da6265ff1a" - integrity sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.7.0" - tsconfig-paths "^4.0.0" - -tsconfig-paths@^3.14.1, tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tsconfig-paths@^4.0.0, tsconfig-paths@^4.1.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@1.14.1, 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== - -tslib@2.5.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" - integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== - -tslib@2.7.0, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== - -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" - -tuf-js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" - integrity sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg== - dependencies: - "@tufjs/models" "1.0.4" - debug "^4.3.4" - make-fetch-happen "^11.1.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" - -tweetnacl@1.0.3, tweetnacl@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -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-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -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== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-fest@^3.8.0: - version "3.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" - integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== - -type-fest@^4.2.0: - version "4.23.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.23.0.tgz#8196561a6b835175473be744f3e41e2dece1496b" - integrity sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-typed-array "^1.1.13" - -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" - -typed-assert@^1.0.8: - version "1.0.9" - resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213" - integrity sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg== - -typedarray-to-buffer@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz#9bb8ba0e841fb3f4cf1fe7c245e9f3fa8a5fe99c" - integrity sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typescript@5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" - integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== - -ua-parser-js@^1.0.2: - version "1.0.38" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.38.tgz#66bb0c4c0e322fe48edfe6d446df6042e62f25e2" - integrity sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ== - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - -ufo@^1.4.0, ufo@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" - integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== - -uglify-js@^3.1.4: - version "3.18.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" - integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== - -uint8-varint@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-2.0.4.tgz#85be52b3849eb30f2c3640a2df8a14364180affb" - integrity sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw== - dependencies: - uint8arraylist "^2.0.0" - uint8arrays "^5.0.0" - -uint8arraylist@^2.0.0, uint8arraylist@^2.1.2, uint8arraylist@^2.4.8: - version "2.4.8" - resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" - integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== - dependencies: - uint8arrays "^5.0.1" - -uint8arrays@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" - integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog== - dependencies: - multiformats "^9.4.2" - -uint8arrays@^3.0.0, uint8arrays@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" - integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== - dependencies: - multiformats "^9.4.2" - -uint8arrays@^4.0.2: - version "4.0.10" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" - integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== - dependencies: - multiformats "^12.0.1" - -uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.1.0.tgz#14047c9bdf825d025b7391299436e5e50e7270f1" - integrity sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww== - dependencies: - multiformats "^13.0.0" - -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" - -uncrypto@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" - integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== - -underscore@~1.13.2: - version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -undici@^5.12.0: - version "5.28.4" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" - integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== - dependencies: - "@fastify/busboy" "^2.0.0" - -unenv@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.9.0.tgz#469502ae85be1bd3a6aa60f810972b1a904ca312" - integrity sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g== - dependencies: - consola "^3.2.3" - defu "^6.1.3" - mime "^3.0.0" - node-fetch-native "^1.6.1" - pathe "^1.1.1" - -unfetch@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" - integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -union@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" - integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== - dependencies: - qs "^6.4.0" - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-filename@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" - integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== - dependencies: - unique-slug "^3.0.0" - -unique-filename@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" - integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== - dependencies: - unique-slug "^4.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-slug@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" - integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== - dependencies: - imurmurhash "^0.1.4" - -unique-slug@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" - integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universal-user-agent@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" - integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== - -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@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unstorage@^1.9.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.10.2.tgz#fb7590ada8b30e83be9318f85100158b02a76dae" - integrity sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ== - dependencies: - anymatch "^3.1.3" - chokidar "^3.6.0" - destr "^2.0.3" - h3 "^1.11.1" - listhen "^1.7.2" - lru-cache "^10.2.0" - mri "^1.2.0" - node-fetch-native "^1.6.2" - ofetch "^1.3.3" - ufo "^1.4.0" - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -untun@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/untun/-/untun-0.1.3.tgz#5d10dee37a3a5737ff03d158be877dae0a0e58a6" - integrity sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ== - dependencies: - citty "^0.1.5" - consola "^3.2.3" - pathe "^1.1.1" - -update-browserslist-db@^1.0.11: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== - dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" - -upper-case-first@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" - integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== - dependencies: - tslib "^2.0.3" - -upper-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" - integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== - dependencies: - tslib "^2.0.3" - -uqr@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" - integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== - -uri-js@^4.2.2, uri-js@^4.4.1: - 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@^4.0.0, url-join@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" - integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== - -url-loader@4.1.1, url-loader@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - -url-parse@^1.5.3: - 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" - -url@0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use-sync-external-store@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, 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== - -util@0.12.5, util@^0.12.4: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - 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" - -utility-types@^3.10.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" - integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid4@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid4/-/uuid4-2.0.3.tgz#241e5dfe1704a79c52e2aa40e7e581a5e7b01ab4" - integrity sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ== - -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@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-compile-cache@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-compile-cache@^2.0.3: - version "2.4.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" - integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== - -v8-to-istanbul@^9.0.1: - version "9.3.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" - integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: - 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" - -validate-npm-package-name@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" - integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== - dependencies: - builtins "^5.0.0" - -validate-npm-package-name@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" - integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== - -valtio@1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" - integrity sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw== - dependencies: - proxy-compare "2.5.1" - use-sync-external-store "1.2.0" - -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -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" - -viem@2.16.2: - version "2.16.2" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.16.2.tgz#227e14c61afc9057d2290501649e37f7ed0379be" - integrity sha512-qor3v1cJFR3jcPtcJxPbKfKURAH2agNf2IWZIaSReV6teNLERiu4Sr7kbqpkIeTAEpiDCVQwg336M+mub1m+pg== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "1.0.4" - isows "1.0.4" - ws "8.17.1" - -viem@^1.0.0, viem@^1.1.4: - version "1.21.4" - resolved "https://registry.yarnpkg.com/viem/-/viem-1.21.4.tgz#883760e9222540a5a7e0339809202b45fe6a842d" - integrity sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "0.9.8" - isows "1.0.3" - ws "8.13.0" - -vite@4.3.9: - version "4.3.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d" - integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg== - dependencies: - esbuild "^0.17.5" - postcss "^8.4.23" - rollup "^3.21.0" - optionalDependencies: - fsevents "~2.3.2" - -w3c-xmlserializer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" - integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== - dependencies: - xml-name-validator "^4.0.0" - -wagmi@2.10.9: - version "2.10.9" - resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.10.9.tgz#12830963aa9ee3e5ade94b84dd14543607a7c2e9" - integrity sha512-pYGTLmVIAC4q/a90i+vlrkJL86n5Kf/gwhhi65XtQklpsUQWrKDmn4dsY1/yFeAmZ/1yx1mpxYpX3LI97eTuWA== - dependencies: - "@wagmi/connectors" "5.0.21" - "@wagmi/core" "2.11.6" - use-sync-external-store "1.2.0" - -walk-up-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" - integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -watchpack@^2.4.0, watchpack@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" - integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.0, 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" - -weak-lru-cache@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" - integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== - -"webextension-polyfill@>=0.10.0 <1.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.11.0.tgz#1640c0d27192424fd5b420237acbe453f88c8246" - integrity sha512-YUBSKQA0iCx2YtM75VFgvvcx1hLKaGGiph6a6UaUdSgk32VT9SzrcDAKBjeGHXoAZTnNBqS5skA4VfoKMXhEBA== - dependencies: - webpack "^5.91.0" - webpack-cli "^5.1.4" - -webextension-polyfill@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.10.0.tgz#ccb28101c910ba8cf955f7e6a263e662d744dbb8" - integrity sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g== - -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== - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -webpack-cli@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" - integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.1.1" - "@webpack-cli/info" "^2.0.2" - "@webpack-cli/serve" "^2.0.5" - colorette "^2.0.14" - commander "^10.0.1" - cross-spawn "^7.0.3" - envinfo "^7.7.3" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^3.1.1" - rechoir "^0.8.0" - webpack-merge "^5.7.3" - -webpack-dev-middleware@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz#6bbc257ec83ae15522de7a62f995630efde7cc3d" - integrity sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ== - dependencies: - colorette "^2.0.10" - memfs "^3.4.12" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-middleware@^5.3.1, webpack-dev-middleware@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" - integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@4.15.0: - version "4.15.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz#87ba9006eca53c551607ea0d663f4ae88be7af21" - integrity sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.1" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.13.0" - -webpack-dev-server@^4.9.3: - version "4.15.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" - integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.4" - ws "^8.13.0" - -webpack-merge@5.7.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" - integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - -webpack-merge@5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" - integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - -webpack-merge@5.9.0: - version "5.9.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" - integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - -webpack-merge@^5.7.3, webpack-merge@^5.8.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-node-externals@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz#1a3407c158d547a9feb4229a9e3385b7b60c9917" - integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== - -webpack-sources@^3.0.0, webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack-subresource-integrity@5.1.0, webpack-subresource-integrity@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz#8b7606b033c6ccac14e684267cb7fb1f5c2a132a" - integrity sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q== - dependencies: - typed-assert "^1.0.8" - -webpack@5.75.0: - version "5.75.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" - integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.7.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.10.0" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -webpack@5.86.0: - version "5.86.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.86.0.tgz#b0eb81794b62aee0b7e7eb8c5073495217d9fc6d" - integrity sha512-3BOvworZ8SO/D4GVP+GoRC3fVeg5MO4vzmq8TJJEkdmopxyazGDxN8ClqN12uzrZW9Tv8EED8v5VSb6Sqyi0pg== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.14.1" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.2" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -webpack@^5.75.0: - version "5.92.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.92.1.tgz#eca5c1725b9e189cffbd86e8b6c3c7400efc5788" - integrity sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-attributes "^1.9.5" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - -webpack@^5.80.0, webpack@^5.91.0: - version "5.91.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - 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-encoding@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" - integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== - dependencies: - iconv-lite "0.6.3" - -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -whatwg-url@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" - integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -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" - -wherearewe@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wherearewe/-/wherearewe-2.0.1.tgz#37c97a7bf112dca8db34bfefb2f6c997af312bb8" - integrity sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw== - dependencies: - is-electron "^2.2.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-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -which-collection@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" - integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== - dependencies: - is-map "^2.0.3" - is-set "^2.0.3" - is-weakmap "^2.0.2" - is-weakset "^2.0.3" - -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2, which-typed-array@^1.1.9: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.2" - -which@^2.0.1, which@^2.0.2: - 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" - -which@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" - integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -"wrap-ansi-cjs@npm: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" - -wrap-ansi@^6.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" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -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== - -write-file-atomic@^4.0.0, write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -ws@8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== - -ws@8.17.1: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" - integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== - -ws@^7.5.1: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -ws@^8.11.0, ws@^8.13.0, ws@^8.5.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - -ws@~8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== - -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xmlcreate@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" - integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== - -xmlhttprequest-ssl@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" - integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== - -xtend@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" - integrity sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw== - -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xtend@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee" - integrity sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg== - dependencies: - is-object "~0.1.2" - object-keys "~0.2.0" - -xtend@~2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== - dependencies: - object-keys "~0.4.0" - -xtend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" - integrity sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg== - -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.2: - 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, yaml@^1.10.2, yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@21.1.1, yargs-parser@>=21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: - 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-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, yargs-parser@^20.2.3: - 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@17.7.2, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.5.1, yargs@^17.6.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - 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" - -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" - -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" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -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== - -yocto-queue@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110" - integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== - -zod@3.22.4: - version "3.22.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" - integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== - -zone.js@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.12.0.tgz#a4a6e5fab6d34bd37d89c77e89ac2e6f4a3d2c30" - integrity sha512-XtC+I5dXU14HrzidAKBNMqneIVUykLEAA1x+v4KVrd6AUPWlwYORF8KgsVqvgdHiKZ4BkxxjvYi/ksEixTPR0Q== - dependencies: - tslib "^2.3.0" - -zustand@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.4.1.tgz#0cd3a3e4756f21811bd956418fdc686877e8b3b0" - integrity sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw== - dependencies: - use-sync-external-store "1.2.0" + version: 3.9.3 + resolution: "@coinbase/wallet-sdk@npm:3.9.3" + dependencies: + bn.js: "npm:^5.2.1" + buffer: "npm:^6.0.3" + clsx: "npm:^1.2.1" + eth-block-tracker: "npm:^7.1.0" + eth-json-rpc-filters: "npm:^6.0.0" + eventemitter3: "npm:^5.0.1" + keccak: "npm:^3.0.3" + preact: "npm:^10.16.0" + sha.js: "npm:^2.4.11" + checksum: 10c0/a34b7f3e84f1d12f8235d57b3fd2e06d04e9ad9d999944b43bf0a3b0e79bc1cff336e9097f4555f85e7085ac7a1be2907732cda6a79cad1b60521d996f390b99 + languageName: node + linkType: hard + +"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"chalk@npm:^2.3.2, chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + +"chalk@npm:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 + languageName: node + linkType: hard + +"chalk@npm:^5.0.0, chalk@npm:^5.2.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 + languageName: node + linkType: hard + +"change-case@npm:^4.1.1": + version: 4.1.2 + resolution: "change-case@npm:4.1.2" + dependencies: + camel-case: "npm:^4.1.2" + capital-case: "npm:^1.0.4" + constant-case: "npm:^3.0.4" + dot-case: "npm:^3.0.4" + header-case: "npm:^2.0.4" + no-case: "npm:^3.0.4" + param-case: "npm:^3.0.4" + pascal-case: "npm:^3.1.2" + path-case: "npm:^3.0.4" + sentence-case: "npm:^3.0.4" + snake-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/95a6e48563cd393241ce18470c7310a8a050304a64b63addac487560ab039ce42b099673d1d293cc10652324d92060de11b5d918179fe3b5af2ee521fb03ca58 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d + languageName: node + linkType: hard + +"charenc@npm:>= 0.0.1": + version: 0.0.2 + resolution: "charenc@npm:0.0.2" + checksum: 10c0/a45ec39363a16799d0f9365c8dd0c78e711415113c6f14787a22462ef451f5013efae8a28f1c058f81fc01f2a6a16955f7a5fd0cd56247ce94a45349c89877d8 + languageName: node + linkType: hard + +"check-more-types@npm:^2.24.0": + version: 2.24.0 + resolution: "check-more-types@npm:2.24.0" + checksum: 10c0/93fda2c32eb5f6cd1161a84a2f4107c0e00b40a851748516791dd9a0992b91bdf504e3bf6bf7673ce603ae620042e11ed4084d16d6d92b36818abc9c2e725520 + languageName: node + linkType: hard + +"chokidar@npm:3.5.3": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 + languageName: node + linkType: hard + +"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.0.0, chokidar@npm:^3.5.1, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chokidar@npm:^4.0.0": + version: 4.0.1 + resolution: "chokidar@npm:4.0.1" + dependencies: + readdirp: "npm:^4.0.1" + checksum: 10c0/4bb7a3adc304059810bb6c420c43261a15bb44f610d77c35547addc84faa0374265c3adc67f25d06f363d9a4571962b02679268c40de07676d260de1986efea9 + languageName: node + linkType: hard + +"chownr@npm:^1.1.1": + version: 1.1.4 + resolution: "chownr@npm:1.1.4" + checksum: 10c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"chrome-trace-event@npm:^1.0.2, chrome-trace-event@npm:^1.0.3": + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: 10c0/3058da7a5f4934b87cf6a90ef5fb68ebc5f7d06f143ed5a4650208e5d7acae47bc03ec844b29fbf5ba7e46e8daa6acecc878f7983a4f4bb7271593da91e61ff5 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"cidr-regex@npm:^3.1.1": + version: 3.1.1 + resolution: "cidr-regex@npm:3.1.1" + dependencies: + ip-regex: "npm:^4.1.0" + checksum: 10c0/3049225d23fe5b6e0e439d35f90bd344a1e0d2049f77786cc05a755d675b74f5ba8fc3420fb7de0f00892ab8b5af4540125cf46faff91074ee2488711b3a106d + languageName: node + linkType: hard + +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": + version: 1.0.4 + resolution: "cipher-base@npm:1.0.4" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/d8d005f8b64d8a77b3d3ce531301ae7b45902c9cab4ec8b66bdbd2bf2a1d9fceb9a2133c293eb3c060b2d964da0f14c47fb740366081338aa3795dd1faa8984b + languageName: node + linkType: hard + +"citty@npm:^0.1.5, citty@npm:^0.1.6": + version: 0.1.6 + resolution: "citty@npm:0.1.6" + dependencies: + consola: "npm:^3.2.3" + checksum: 10c0/d26ad82a9a4a8858c7e149d90b878a3eceecd4cfd3e2ed3cd5f9a06212e451fb4f8cbe0fa39a3acb1b3e8f18e22db8ee5def5829384bad50e823d4b301609b48 + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.4.1 + resolution: "cjs-module-lexer@npm:1.4.1" + checksum: 10c0/5a7d8279629c9ba8ccf38078c2fed75b7737973ced22b9b5a54180efa57fb2fe2bb7bec6aec55e3b8f3f5044f5d7b240347ad9bd285e7c3d0ee5b0a1d0504dfc + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"cli-columns@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-columns@npm:4.0.0" + dependencies: + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/f724c874dba09376f7b2d6c70431d8691d5871bd5d26c6f658dd56b514e668ed5f5b8d803fb7e29f4000fc7f3a6d038d415b892ae7fa3dcd9cc458c07df17871 + languageName: node + linkType: hard + +"cli-cursor@npm:3.1.0, cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + languageName: node + linkType: hard + +"cli-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-cursor@npm:4.0.0" + dependencies: + restore-cursor: "npm:^4.0.0" + checksum: 10c0/e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c + languageName: node + linkType: hard + +"cli-spinners@npm:2.6.1": + version: 2.6.1 + resolution: "cli-spinners@npm:2.6.1" + checksum: 10c0/6abcdfef59aa68e6b51376d87d257f9120a0a7120a39dd21633702d24797decb6dc747dff2217c88732710db892b5053c5c672d221b6c4d13bbcb5372e203596 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0, cli-spinners@npm:^2.6.1": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 + languageName: node + linkType: hard + +"cli-table3@npm:^0.6.2, cli-table3@npm:^0.6.3, cli-table3@npm:~0.6.1": + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" + dependencies: + "@colors/colors": "npm:1.5.0" + string-width: "npm:^4.2.0" + dependenciesMeta: + "@colors/colors": + optional: true + checksum: 10c0/d7cc9ed12212ae68241cc7a3133c52b844113b17856e11f4f81308acc3febcea7cc9fd298e70933e294dd642866b29fd5d113c2c098948701d0c35f09455de78 + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: "npm:^3.0.0" + string-width: "npm:^4.2.0" + checksum: 10c0/dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a + languageName: node + linkType: hard + +"client-only@npm:0.0.1": + version: 0.0.1 + resolution: "client-only@npm:0.0.1" + checksum: 10c0/9d6cfd0c19e1c96a434605added99dff48482152af791ec4172fb912a71cff9027ff174efd8cdb2160cc7f377543e0537ffc462d4f279bc4701de3f2a3c4b358 + languageName: node + linkType: hard + +"clipboardy@npm:^4.0.0": + version: 4.0.0 + resolution: "clipboardy@npm:4.0.0" + dependencies: + execa: "npm:^8.0.1" + is-wsl: "npm:^3.1.0" + is64bit: "npm:^2.0.0" + checksum: 10c0/02bb5f3d0a772bd84ec26a3566c72c2319a9f3b4cb8338370c3bffcf0073c80b834abe1a6945bea4f2cbea28e1627a975aaac577e3f61a868d924ce79138b041 + languageName: node + linkType: hard + +"cliui@npm:^6.0.0": + version: 6.0.0 + resolution: "cliui@npm:6.0.0" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/35229b1bb48647e882104cac374c9a18e34bbf0bace0e2cf03000326b6ca3050d6b59545d91e17bfe3705f4a0e2988787aa5cde6331bf5cbbf0164732cef6492 + languageName: node + linkType: hard + +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + kind-of: "npm:^6.0.2" + shallow-clone: "npm:^3.0.0" + checksum: 10c0/637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + +"clone@npm:^2.1.1": + version: 2.1.2 + resolution: "clone@npm:2.1.2" + checksum: 10c0/ed0601cd0b1606bc7d82ee7175b97e68d1dd9b91fd1250a3617b38d34a095f8ee0431d40a1a611122dcccb4f93295b4fdb94942aa763392b5fe44effa50c2d5e + languageName: node + linkType: hard + +"clone@npm:~0.1.9": + version: 0.1.19 + resolution: "clone@npm:0.1.19" + checksum: 10c0/593474606fc5ab34c94364bd1e8d58526f63cbc8061236b73ffafb1675174206e9d0317aab66a87159128aef082500c3bd50063da64acc2604b7af8762d92a24 + languageName: node + linkType: hard + +"clsx@npm:^1.2.1": + version: 1.2.1 + resolution: "clsx@npm:1.2.1" + checksum: 10c0/34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27 + languageName: node + linkType: hard + +"cmd-shim@npm:^5.0.0": + version: 5.0.0 + resolution: "cmd-shim@npm:5.0.0" + dependencies: + mkdirp-infer-owner: "npm:^2.0.0" + checksum: 10c0/0ce77d641bed74e41b74f07a00cbdc4e8690787d2136e40418ca7c1bfcff9d92c0350e31785c7bb98b6c1fb8ae7dcedcdc872b98c6647c28de45e2dc7a70ae43 + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"code-block-writer@npm:^11.0.0": + version: 11.0.3 + resolution: "code-block-writer@npm:11.0.3" + checksum: 10c0/12fe4c02152a2b607e8913b39dcc31dcb5240f7c8933a3335d4e42a5418af409bf7ed454c80d6d8c12f9c59bb685dd88f9467874b46be62236dfbed446d03fd6 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 10c0/8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 + languageName: node + linkType: hard + +"colord@npm:^2.9.1": + version: 2.9.3 + resolution: "colord@npm:2.9.3" + checksum: 10c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 + languageName: node + linkType: hard + +"colorette@npm:^1.1.0": + version: 1.4.0 + resolution: "colorette@npm:1.4.0" + checksum: 10c0/4955c8f7daafca8ae7081d672e4bd89d553bd5782b5846d5a7e05effe93c2f15f7e9c0cb46f341b59f579a39fcf436241ff79594899d75d5f3460c03d607fe9e + languageName: node + linkType: hard + +"colorette@npm:^2.0.10, colorette@npm:^2.0.16": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 + languageName: node + linkType: hard + +"columnify@npm:^1.6.0": + version: 1.6.0 + resolution: "columnify@npm:1.6.0" + dependencies: + strip-ansi: "npm:^6.0.1" + wcwidth: "npm:^1.0.0" + checksum: 10c0/25b90b59129331bbb8b0c838f8df69924349b83e8eab9549f431062a20a39094b8d744bb83265be38fd5d03140ce4bfbd85837c293f618925e83157ae9535f1d + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"commander@npm:^11.0.0": + version: 11.1.0 + resolution: "commander@npm:11.1.0" + checksum: 10c0/13cc6ac875e48780250f723fb81c1c1178d35c5decb1abb1b628b3177af08a8554e76b2c0f29de72d69eef7c864d12613272a71fabef8047922bc622ab75a179 + languageName: node + linkType: hard + +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + languageName: node + linkType: hard + +"commander@npm:^5.1.0": + version: 5.1.0 + resolution: "commander@npm:5.1.0" + checksum: 10c0/da9d71dbe4ce039faf1fe9eac3771dca8c11d66963341f62602f7b66e36d2a3f8883407af4f9a37b1db1a55c59c0c1325f186425764c2e963dc1d67aec2a4b6d + languageName: node + linkType: hard + +"commander@npm:^6.2.1": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea + languageName: node + linkType: hard + +"commander@npm:^7.0.0, commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a + languageName: node + linkType: hard + +"common-ancestor-path@npm:^1.0.1": + version: 1.0.1 + resolution: "common-ancestor-path@npm:1.0.1" + checksum: 10c0/390c08d2a67a7a106d39499c002d827d2874966d938012453fd7ca34cd306881e2b9d604f657fa7a8e6e4896d67f39ebc09bf1bfd8da8ff318e0fb7a8752c534 + languageName: node + linkType: hard + +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: 10c0/c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb + languageName: node + linkType: hard + +"common-tags@npm:^1.8.0": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 10c0/23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 + languageName: node + linkType: hard + +"compare-func@npm:^2.0.0": + version: 2.0.0 + resolution: "compare-func@npm:2.0.0" + dependencies: + array-ify: "npm:^1.0.0" + dot-prop: "npm:^5.1.0" + checksum: 10c0/78bd4dd4ed311a79bd264c9e13c36ed564cde657f1390e699e0f04b8eee1fc06ffb8698ce2dfb5fbe7342d509579c82d4e248f08915b708f77f7b72234086cc3 + languageName: node + linkType: hard + +"compressible@npm:~2.0.16": + version: 2.0.18 + resolution: "compressible@npm:2.0.18" + dependencies: + mime-db: "npm:>= 1.43.0 < 2" + checksum: 10c0/8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 + languageName: node + linkType: hard + +"compression@npm:^1.7.4": + version: 1.7.4 + resolution: "compression@npm:1.7.4" + dependencies: + accepts: "npm:~1.3.5" + bytes: "npm:3.0.0" + compressible: "npm:~2.0.16" + debug: "npm:2.6.9" + on-headers: "npm:~1.0.2" + safe-buffer: "npm:5.1.2" + vary: "npm:~1.1.2" + checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"concat-stream@npm:^1.4.4": + version: 1.6.2 + resolution: "concat-stream@npm:1.6.2" + dependencies: + buffer-from: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^2.2.2" + typedarray: "npm:^0.0.6" + checksum: 10c0/2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 + languageName: node + linkType: hard + +"concat-with-sourcemaps@npm:^1.1.0": + version: 1.1.0 + resolution: "concat-with-sourcemaps@npm:1.1.0" + dependencies: + source-map: "npm:^0.6.1" + checksum: 10c0/d30cec83a320d20d7e9482a4d011fa84319a0a8f9107acb632c48493d608be3a2b879608866d9edba2ce304ee52bc798138c26ad16eda6fbe7ec5e7bec99a683 + languageName: node + linkType: hard + +"confbox@npm:^0.1.7": + version: 0.1.7 + resolution: "confbox@npm:0.1.7" + checksum: 10c0/18b40c2f652196a833f3f1a5db2326a8a579cd14eacabfe637e4fc8cb9b68d7cf296139a38c5e7c688ce5041bf46f9adce05932d43fde44cf7e012840b5da111 + languageName: node + linkType: hard + +"config-chain@npm:^1.1.11": + version: 1.1.13 + resolution: "config-chain@npm:1.1.13" + dependencies: + ini: "npm:^1.3.4" + proto-list: "npm:~1.2.1" + checksum: 10c0/39d1df18739d7088736cc75695e98d7087aea43646351b028dfabd5508d79cf6ef4c5bcd90471f52cd87ae470d1c5490c0a8c1a292fbe6ee9ff688061ea0963e + languageName: node + linkType: hard + +"connect-history-api-fallback@npm:^2.0.0": + version: 2.0.0 + resolution: "connect-history-api-fallback@npm:2.0.0" + checksum: 10c0/90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 + languageName: node + linkType: hard + +"consola@npm:^3.2.3": + version: 3.2.3 + resolution: "consola@npm:3.2.3" + checksum: 10c0/c606220524ec88a05bb1baf557e9e0e04a0c08a9c35d7a08652d99de195c4ddcb6572040a7df57a18ff38bbc13ce9880ad032d56630cef27bef72768ef0ac078 + languageName: node + linkType: hard + +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 10c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 + languageName: node + linkType: hard + +"constant-case@npm:^3.0.4": + version: 3.0.4 + resolution: "constant-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case: "npm:^2.0.2" + checksum: 10c0/91d54f18341fcc491ae66d1086642b0cc564be3e08984d7b7042f8b0a721c8115922f7f11d6a09f13ed96ff326eabae11f9d1eb0335fa9d8b6e39e4df096010e + languageName: node + linkType: hard + +"content-disposition@npm:0.5.4": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: "npm:5.2.1" + checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb + languageName: node + linkType: hard + +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af + languageName: node + linkType: hard + +"conventional-changelog-angular@npm:^5.0.0": + version: 5.0.13 + resolution: "conventional-changelog-angular@npm:5.0.13" + dependencies: + compare-func: "npm:^2.0.0" + q: "npm:^1.5.1" + checksum: 10c0/bca711b835fe01d75e3500b738f6525c91a12096218e917e9fd81bf9accf157f904fee16f88c523fd5462fb2a7cb1d060eb79e9bc9a3ccb04491f0c383b43231 + languageName: node + linkType: hard + +"conventional-changelog-angular@npm:^7.0.0": + version: 7.0.0 + resolution: "conventional-changelog-angular@npm:7.0.0" + dependencies: + compare-func: "npm:^2.0.0" + checksum: 10c0/90e73e25e224059b02951b6703b5f8742dc2a82c1fea62163978e6735fd3ab04350897a8fc6f443ec6b672d6b66e28a0820e833e544a0101f38879e5e6289b7e + languageName: node + linkType: hard + +"conventional-changelog-atom@npm:^4.0.0": + version: 4.0.0 + resolution: "conventional-changelog-atom@npm:4.0.0" + checksum: 10c0/140e0708e69a4e7345e95bdb2875f8a13b44e1d29334a5be823a74c817d2b17acc3ab57757df20d0d23e224433d9e36c4fdf67a529394106e3b1ade4c0e4c6da + languageName: node + linkType: hard + +"conventional-changelog-codemirror@npm:^4.0.0": + version: 4.0.0 + resolution: "conventional-changelog-codemirror@npm:4.0.0" + checksum: 10c0/d568a13cce260632bc1e8aec463721a149e09aaa97149ab6d813c8c74ea7ea548cec4aaa721cae5704bf4bf95b7daa184ec069fcf112a219e848f1ef4e326091 + languageName: node + linkType: hard + +"conventional-changelog-conventionalcommits@npm:^7.0.2": + version: 7.0.2 + resolution: "conventional-changelog-conventionalcommits@npm:7.0.2" + dependencies: + compare-func: "npm:^2.0.0" + checksum: 10c0/3cb1eab35e37fc973cfb3aed0e159f54414e49b222988da1c2aa86cc8a87fe7531491bbb7657fe5fc4dc0e25f5b50e2065ba8ac71cc4c08eed9189102a2b81bd + languageName: node + linkType: hard + +"conventional-changelog-core@npm:^7.0.0": + version: 7.0.0 + resolution: "conventional-changelog-core@npm:7.0.0" + dependencies: + "@hutson/parse-repository-url": "npm:^5.0.0" + add-stream: "npm:^1.0.0" + conventional-changelog-writer: "npm:^7.0.0" + conventional-commits-parser: "npm:^5.0.0" + git-raw-commits: "npm:^4.0.0" + git-semver-tags: "npm:^7.0.0" + hosted-git-info: "npm:^7.0.0" + normalize-package-data: "npm:^6.0.0" + read-pkg: "npm:^8.0.0" + read-pkg-up: "npm:^10.0.0" + checksum: 10c0/3d5119faf3c154e57e2574b87320892637f4a26cf047827ec8917c227b7e1b3a6ee0ea00247e548f65100db013174d355744ff5b4b90c7c45855db109c24aa2a + languageName: node + linkType: hard + +"conventional-changelog-ember@npm:^4.0.0": + version: 4.0.0 + resolution: "conventional-changelog-ember@npm:4.0.0" + checksum: 10c0/f6f76a71cca0aa4919b750f679224cb891caa8d9522f9f6377a92e648e13e35cdcfea465c18309179abdbb662243321656f09f775996d636d57a81aa7bb6ff3c + languageName: node + linkType: hard + +"conventional-changelog-eslint@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-eslint@npm:5.0.0" + checksum: 10c0/e11239fcaf26a1be9df062f6fc750496f982c18f03e4eed7931b177e607337b86207f448fee8891fbdac449bcb9ed29dcc4da3ccb6fe4d5cd55ff4f9b7a65d8f + languageName: node + linkType: hard + +"conventional-changelog-express@npm:^4.0.0": + version: 4.0.0 + resolution: "conventional-changelog-express@npm:4.0.0" + checksum: 10c0/a9dc0eabe1fd9ae8361fc4833bb2d051b0280637d3b67c35855e2e206cdf299e8c9c80a49f9d8153ae6c3bd42462390ee861bff3afb91f44b133167040e8da21 + languageName: node + linkType: hard + +"conventional-changelog-jquery@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-jquery@npm:5.0.0" + checksum: 10c0/82b6b8b65d484d15bbe08d65e948005879fcd4d1e01d50515ca04b0951f3245f78c6075c30f6ea29239f30c547570a86c0b8ee4ac0afaeacd548ee0a6506b7cb + languageName: node + linkType: hard + +"conventional-changelog-jshint@npm:^4.0.0": + version: 4.0.0 + resolution: "conventional-changelog-jshint@npm:4.0.0" + dependencies: + compare-func: "npm:^2.0.0" + checksum: 10c0/87683278208351ceb01cb547acf3725f077d54deed6c51b2f49cf566921d09f7ce724cccb7e19046564f41d473061fd2717852a863f36ba5e7ff5f788b4d79a9 + languageName: node + linkType: hard + +"conventional-changelog-preset-loader@npm:^4.1.0": + version: 4.1.0 + resolution: "conventional-changelog-preset-loader@npm:4.1.0" + checksum: 10c0/7854ddeca740d2e478f0e8aa6591dd224c7e094863cbefada2f219459d8e267580ab73d0a0f566a7f37382896ec0f502e9908123af866fd6d7fbc560edd1ee68 + languageName: node + linkType: hard + +"conventional-changelog-writer@npm:^5.0.0": + version: 5.0.1 + resolution: "conventional-changelog-writer@npm:5.0.1" + dependencies: + conventional-commits-filter: "npm:^2.0.7" + dateformat: "npm:^3.0.0" + handlebars: "npm:^4.7.7" + json-stringify-safe: "npm:^5.0.1" + lodash: "npm:^4.17.15" + meow: "npm:^8.0.0" + semver: "npm:^6.0.0" + split: "npm:^1.0.0" + through2: "npm:^4.0.0" + bin: + conventional-changelog-writer: cli.js + checksum: 10c0/268b56a3e4db07ad24da7134788c889ecd024cf2e7c0bfe8ca76f83e5db79f057538c45500b052a77b7933c4d0f47e2e807c6e756cbd5ad9db365744c9ce0e7f + languageName: node + linkType: hard + +"conventional-changelog-writer@npm:^7.0.0": + version: 7.0.1 + resolution: "conventional-changelog-writer@npm:7.0.1" + dependencies: + conventional-commits-filter: "npm:^4.0.0" + handlebars: "npm:^4.7.7" + json-stringify-safe: "npm:^5.0.1" + meow: "npm:^12.0.1" + semver: "npm:^7.5.2" + split2: "npm:^4.0.0" + bin: + conventional-changelog-writer: cli.mjs + checksum: 10c0/ec51708c33860777f2b85f1df588aed918cab08919146cdfac8f271e31c0caee22c5c50df78e4ce358022e58f65c8de77fd6a5fb529f4bb5ba27c2d1e072750f + languageName: node + linkType: hard + +"conventional-changelog@npm:^5.1.0": + version: 5.1.0 + resolution: "conventional-changelog@npm:5.1.0" + dependencies: + conventional-changelog-angular: "npm:^7.0.0" + conventional-changelog-atom: "npm:^4.0.0" + conventional-changelog-codemirror: "npm:^4.0.0" + conventional-changelog-conventionalcommits: "npm:^7.0.2" + conventional-changelog-core: "npm:^7.0.0" + conventional-changelog-ember: "npm:^4.0.0" + conventional-changelog-eslint: "npm:^5.0.0" + conventional-changelog-express: "npm:^4.0.0" + conventional-changelog-jquery: "npm:^5.0.0" + conventional-changelog-jshint: "npm:^4.0.0" + conventional-changelog-preset-loader: "npm:^4.1.0" + checksum: 10c0/931b3cf5b70e2cedbc8942b25176146b9ebb7534ba908454fccdc6dd8097442a79fe150976a854f448306e1fd2788f1daac0cf066ca163ce8f119289594c8918 + languageName: node + linkType: hard + +"conventional-commits-filter@npm:^2.0.0, conventional-commits-filter@npm:^2.0.7": + version: 2.0.7 + resolution: "conventional-commits-filter@npm:2.0.7" + dependencies: + lodash.ismatch: "npm:^4.4.0" + modify-values: "npm:^1.0.0" + checksum: 10c0/df06fb29285b473614f5094e983d26fcc14cd0f64b2cbb2f65493fc8bd47c077c2310791d26f4b2b719e9585aaade95370e73230bff6647163164a18b9dfaa07 + languageName: node + linkType: hard + +"conventional-commits-filter@npm:^4.0.0": + version: 4.0.0 + resolution: "conventional-commits-filter@npm:4.0.0" + checksum: 10c0/b26ea11ebb38218cb3cbbaf7d68b0f7c3b0eb7ad69afe9c9431d91e784acbebaeda7a095127ae5a7f8b75087d62b44e8e69d63426ff02b49f7dd504755934247 + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^3.2.3": + version: 3.2.4 + resolution: "conventional-commits-parser@npm:3.2.4" + dependencies: + JSONStream: "npm:^1.0.4" + is-text-path: "npm:^1.0.1" + lodash: "npm:^4.17.15" + meow: "npm:^8.0.0" + split2: "npm:^3.0.0" + through2: "npm:^4.0.0" + bin: + conventional-commits-parser: cli.js + checksum: 10c0/122d7d7f991a04c8e3f703c0e4e9a25b2ecb20906f497e4486cb5c2acd9c68f6d9af745f7e79cb407538f50e840b33399274ac427b20971b98b335d1b66d3d17 + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-commits-parser@npm:5.0.0" + dependencies: + JSONStream: "npm:^1.3.5" + is-text-path: "npm:^2.0.0" + meow: "npm:^12.0.1" + split2: "npm:^4.0.0" + bin: + conventional-commits-parser: cli.mjs + checksum: 10c0/c9e542f4884119a96a6bf3311ff62cdee55762d8547f4c745ae3ebdc50afe4ba7691e165e34827d5cf63283cbd93ab69917afd7922423075b123d5d9a7a82ed2 + languageName: node + linkType: hard + +"conventional-recommended-bump@npm:^9.0.0": + version: 9.0.0 + resolution: "conventional-recommended-bump@npm:9.0.0" + dependencies: + conventional-changelog-preset-loader: "npm:^4.1.0" + conventional-commits-filter: "npm:^4.0.0" + conventional-commits-parser: "npm:^5.0.0" + git-raw-commits: "npm:^4.0.0" + git-semver-tags: "npm:^7.0.0" + meow: "npm:^12.0.1" + bin: + conventional-recommended-bump: cli.mjs + checksum: 10c0/ceec7dcfddfc6508d0ba3debef471b47d4db3a2112e269d5d736202b226651b31fcbd4790c9403b5b14e6501365527b8c2c4ce8836c6a09faf07cb7d03c1fe07 + languageName: node + linkType: hard + +"convert-source-map@npm:^1.5.1, convert-source-map@npm:^1.7.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"cookie-es@npm:^1.2.2": + version: 1.2.2 + resolution: "cookie-es@npm:1.2.2" + checksum: 10c0/210eb67cd40a53986fda99d6f47118cfc45a69c4abc03490d15ab1b83ac978d5518356aecdd7a7a4969292445e3063c2302deda4c73706a67edc008127608638 + languageName: node + linkType: hard + +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 + languageName: node + linkType: hard + +"cookie@npm:0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: 10c0/f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 + languageName: node + linkType: hard + +"copy-anything@npm:^2.0.1": + version: 2.0.6 + resolution: "copy-anything@npm:2.0.6" + dependencies: + is-what: "npm:^3.14.1" + checksum: 10c0/2702998a8cc015f9917385b7f16b0d85f1f6e5e2fd34d99f14df584838f492f49aa0c390d973684c687e895c5c58d08b308a0400ac3e1e3d6fa1e5884a5402ad + languageName: node + linkType: hard + +"copy-to-clipboard@npm:*, copy-to-clipboard@npm:3.3.3": + version: 3.3.3 + resolution: "copy-to-clipboard@npm:3.3.3" + dependencies: + toggle-selection: "npm:^1.0.6" + checksum: 10c0/3ebf5e8ee00601f8c440b83ec08d838e8eabb068c1fae94a9cda6b42f288f7e1b552f3463635f419af44bf7675afc8d0390d30876cf5c2d5d35f86d9c56a3e5f + languageName: node + linkType: hard + +"copy-webpack-plugin@npm:11.0.0": + version: 11.0.0 + resolution: "copy-webpack-plugin@npm:11.0.0" + dependencies: + fast-glob: "npm:^3.2.11" + glob-parent: "npm:^6.0.1" + globby: "npm:^13.1.1" + normalize-path: "npm:^3.0.0" + schema-utils: "npm:^4.0.0" + serialize-javascript: "npm:^6.0.0" + peerDependencies: + webpack: ^5.1.0 + checksum: 10c0/a667dd226b26f148584a35fb705f5af926d872584912cf9fd203c14f2b3a68f473a1f5cf768ec1dd5da23820823b850e5d50458b685c468e4a224b25c12a15b4 + languageName: node + linkType: hard + +"copy-webpack-plugin@npm:^10.2.4": + version: 10.2.4 + resolution: "copy-webpack-plugin@npm:10.2.4" + dependencies: + fast-glob: "npm:^3.2.7" + glob-parent: "npm:^6.0.1" + globby: "npm:^12.0.2" + normalize-path: "npm:^3.0.0" + schema-utils: "npm:^4.0.0" + serialize-javascript: "npm:^6.0.0" + peerDependencies: + webpack: ^5.1.0 + checksum: 10c0/d4501aa2d813eadc906318ed301707240fc7bfeb250813e2e4d93e95bc9896822c136e49de01dfe612ea5334a1f04cb8fbed4412b91117666a92607c0deba624 + languageName: node + linkType: hard + +"core-js-compat@npm:^3.30.2, core-js-compat@npm:^3.33.1, core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1": + version: 3.38.1 + resolution: "core-js-compat@npm:3.38.1" + dependencies: + browserslist: "npm:^4.23.3" + checksum: 10c0/d8bc8a35591fc5fbf3e376d793f298ec41eb452619c7ef9de4ea59b74be06e9fda799e0dcbf9ba59880dae87e3b41fb191d744ffc988315642a1272bb9442b31 + languageName: node + linkType: hard + +"core-js-pure@npm:^3.30.2, core-js-pure@npm:^3.8.1": + version: 3.38.1 + resolution: "core-js-pure@npm:3.38.1" + checksum: 10c0/466adbc0468b8c2a95b9bc49829492dece2cc6584d757c5b38555a26ed3d71f8364ac1ea3128a0a949e004e0e60206cc535ed84320982c3efb9a40c1785ddcc6 + languageName: node + linkType: hard + +"core-js@npm:3.6.5": + version: 3.6.5 + resolution: "core-js@npm:3.6.5" + checksum: 10c0/ab5f869adda3d4dfa8e8753f5b6e6990196f585e701c5fdb2bfd780bdc57235ceefdcd156f557faf9c2d3ed6010383870d3082318f8eda3218b1908413477a04 + languageName: node + linkType: hard + +"core-util-is@npm:1.0.2": + version: 1.0.2 + resolution: "core-util-is@npm:1.0.2" + checksum: 10c0/980a37a93956d0de8a828ce508f9b9e3317039d68922ca79995421944146700e4aaf490a6dbfebcb1c5292a7184600c7710b957d724be1e37b8254c6bc0fe246 + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"cosmiconfig@npm:^6.0.0": + version: 6.0.0 + resolution: "cosmiconfig@npm:6.0.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.1.0" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.7.2" + checksum: 10c0/666ed8732d0bf7d7fe6f8516c8ee6041e0622032e8fa26201577b883d2767ad105d03f38b34b93d1f02f26b22a89e7bab4443b9d2e7f931f48d0e944ffa038b5 + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.2.1" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.10.0" + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 + languageName: node + linkType: hard + +"cosmiconfig@npm:^8.1.3": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + dependencies: + import-fresh: "npm:^3.3.0" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.2.0" + path-type: "npm:^4.0.0" + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a + languageName: node + linkType: hard + +"cosmiconfig@npm:^9.0.0": + version: 9.0.0 + resolution: "cosmiconfig@npm:9.0.0" + dependencies: + env-paths: "npm:^2.2.1" + import-fresh: "npm:^3.3.0" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.2.0" + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/1c1703be4f02a250b1d6ca3267e408ce16abfe8364193891afc94c2d5c060b69611fdc8d97af74b7e6d5d1aac0ab2fb94d6b079573146bc2d756c2484ce5f0ee + languageName: node + linkType: hard + +"crc-32@npm:^1.2.0": + version: 1.2.2 + resolution: "crc-32@npm:1.2.2" + bin: + crc32: bin/crc32.njs + checksum: 10c0/11dcf4a2e77ee793835d49f2c028838eae58b44f50d1ff08394a610bfd817523f105d6ae4d9b5bef0aad45510f633eb23c903e9902e4409bed1ce70cb82b9bf0 + languageName: node + linkType: hard + +"create-ecdh@npm:^4.0.0": + version: 4.0.4 + resolution: "create-ecdh@npm:4.0.4" + dependencies: + bn.js: "npm:^4.1.0" + elliptic: "npm:^6.5.3" + checksum: 10c0/77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": + version: 1.2.0 + resolution: "create-hash@npm:1.2.0" + dependencies: + cipher-base: "npm:^1.0.1" + inherits: "npm:^2.0.1" + md5.js: "npm:^1.3.4" + ripemd160: "npm:^2.0.1" + sha.js: "npm:^2.4.0" + checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 + languageName: node + linkType: hard + +"create-hmac@npm:1.1.7, create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + dependencies: + cipher-base: "npm:^1.0.3" + create-hash: "npm:^1.1.0" + inherits: "npm:^2.0.1" + ripemd160: "npm:^2.0.0" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 + languageName: node + linkType: hard + +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" + bin: + create-jest: bin/create-jest.js + checksum: 10c0/e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 + languageName: node + linkType: hard + +"critters@npm:0.0.20": + version: 0.0.20 + resolution: "critters@npm:0.0.20" + dependencies: + chalk: "npm:^4.1.0" + css-select: "npm:^5.1.0" + dom-serializer: "npm:^2.0.0" + domhandler: "npm:^5.0.2" + htmlparser2: "npm:^8.0.2" + postcss: "npm:^8.4.23" + pretty-bytes: "npm:^5.3.0" + checksum: 10c0/d5769969f237c1a8af92ea88c0d224a2f46e8489fa0afe04d16f65937284ceb3f0ede75e16054c9b91c35c181f5d9dc71eaa4e153de0b7c46d3dd5e4689513b9 + languageName: node + linkType: hard + +"cross-fetch@npm:^3.1.4": + version: 3.1.8 + resolution: "cross-fetch@npm:3.1.8" + dependencies: + node-fetch: "npm:^2.6.12" + checksum: 10c0/4c5e022ffe6abdf380faa6e2373c0c4ed7ef75e105c95c972b6f627c3f083170b6886f19fb488a7fa93971f4f69dcc890f122b0d97f0bf5f41ca1d9a8f58c8af + languageName: node + linkType: hard + +"cross-fetch@npm:^4.0.0": + version: 4.0.0 + resolution: "cross-fetch@npm:4.0.0" + dependencies: + node-fetch: "npm:^2.6.12" + checksum: 10c0/386727dc4c6b044746086aced959ff21101abb85c43df5e1d151547ccb6f338f86dec3f28b9dbddfa8ff5b9ec8662ed2263ad4607a93b2dc354fb7fe3bbb898a + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"crossws@npm:>=0.2.0 <0.4.0": + version: 0.3.1 + resolution: "crossws@npm:0.3.1" + dependencies: + uncrypto: "npm:^0.1.3" + checksum: 10c0/37dc72074ee61ee999ec79e061a0ddab870e061a88cd9b83f479c5c4130c6742ce6b308c38968ee4be9073246c32b0cb0adaed50f1e448b988c3b3172c4ce2e0 + languageName: node + linkType: hard + +"crypt@npm:>= 0.0.1": + version: 0.0.2 + resolution: "crypt@npm:0.0.2" + checksum: 10c0/adbf263441dd801665d5425f044647533f39f4612544071b1471962209d235042fb703c27eea2795c7c53e1dfc242405173003f83cf4f4761a633d11f9653f18 + languageName: node + linkType: hard + +"crypto-browserify@npm:3.12.0": + version: 3.12.0 + resolution: "crypto-browserify@npm:3.12.0" + dependencies: + browserify-cipher: "npm:^1.0.0" + browserify-sign: "npm:^4.0.0" + create-ecdh: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + create-hmac: "npm:^1.1.0" + diffie-hellman: "npm:^5.0.0" + inherits: "npm:^2.0.1" + pbkdf2: "npm:^3.0.3" + public-encrypt: "npm:^4.0.0" + randombytes: "npm:^2.0.0" + randomfill: "npm:^1.0.3" + checksum: 10c0/0c20198886576050a6aa5ba6ae42f2b82778bfba1753d80c5e7a090836890dc372bdc780986b2568b4fb8ed2a91c958e61db1f0b6b1cc96af4bd03ffc298ba92 + languageName: node + linkType: hard + +"crypto-random-string@npm:^2.0.0": + version: 2.0.0 + resolution: "crypto-random-string@npm:2.0.0" + checksum: 10c0/288589b2484fe787f9e146f56c4be90b940018f17af1b152e4dde12309042ff5a2bf69e949aab8b8ac253948381529cc6f3e5a2427b73643a71ff177fa122b37 + languageName: node + linkType: hard + +"css-declaration-sorter@npm:^6.3.1": + version: 6.4.1 + resolution: "css-declaration-sorter@npm:6.4.1" + peerDependencies: + postcss: ^8.0.9 + checksum: 10c0/b8b664338dac528266a1ed9b27927ac51a907fb16bc1954fa9038b5286c442603bd494cc920c6a3616111309d18ee6b5a85b6d9927938efc942af452a5145160 + languageName: node + linkType: hard + +"css-loader@npm:6.8.1": + version: 6.8.1 + resolution: "css-loader@npm:6.8.1" + dependencies: + icss-utils: "npm:^5.1.0" + postcss: "npm:^8.4.21" + postcss-modules-extract-imports: "npm:^3.0.0" + postcss-modules-local-by-default: "npm:^4.0.3" + postcss-modules-scope: "npm:^3.0.0" + postcss-modules-values: "npm:^4.0.0" + postcss-value-parser: "npm:^4.2.0" + semver: "npm:^7.3.8" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/a6e23de4ec1d2832f10b8ca3cfec6b6097a97ca3c73f64338ae5cd110ac270f1b218ff0273d39f677a7a561f1a9d9b0d332274664d0991bcfafaae162c2669c4 + languageName: node + linkType: hard + +"css-loader@npm:7.1.2": + version: 7.1.2 + resolution: "css-loader@npm:7.1.2" + dependencies: + icss-utils: "npm:^5.1.0" + postcss: "npm:^8.4.33" + postcss-modules-extract-imports: "npm:^3.1.0" + postcss-modules-local-by-default: "npm:^4.0.5" + postcss-modules-scope: "npm:^3.2.0" + postcss-modules-values: "npm:^4.0.0" + postcss-value-parser: "npm:^4.2.0" + semver: "npm:^7.5.4" + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.27.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 10c0/edec9ed71e3c416c9c6ad41c138834c94baf7629de3b97a3337ae8cec4a45e05c57bdb7c4b4d267229fc04b8970d0d1c0734ded8dcd0ac8c7c286b36facdbbf0 + languageName: node + linkType: hard + +"css-loader@npm:^6.4.0": + version: 6.11.0 + resolution: "css-loader@npm:6.11.0" + dependencies: + icss-utils: "npm:^5.1.0" + postcss: "npm:^8.4.33" + postcss-modules-extract-imports: "npm:^3.1.0" + postcss-modules-local-by-default: "npm:^4.0.5" + postcss-modules-scope: "npm:^3.2.0" + postcss-modules-values: "npm:^4.0.0" + postcss-value-parser: "npm:^4.2.0" + semver: "npm:^7.5.4" + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 10c0/bb52434138085fed06a33e2ffbdae9ee9014ad23bf60f59d6b7ee67f28f26c6b1764024d3030bd19fd884d6ee6ee2224eaed64ad19eb18fbbb23d148d353a965 + languageName: node + linkType: hard + +"css-minimizer-webpack-plugin@npm:^3.4.1": + version: 3.4.1 + resolution: "css-minimizer-webpack-plugin@npm:3.4.1" + dependencies: + cssnano: "npm:^5.0.6" + jest-worker: "npm:^27.0.2" + postcss: "npm:^8.3.5" + schema-utils: "npm:^4.0.0" + serialize-javascript: "npm:^6.0.0" + source-map: "npm:^0.6.1" + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + "@parcel/css": + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + checksum: 10c0/a6b749a136f7a62a173e576a10c8f2ada18013800a2698ede08dfdf6df6761b9ad24cabfce153ef4958ffcf8509e7b6a40c6ddffa6eb06f3624a97c17b825e06 + languageName: node + linkType: hard + +"css-select@npm:^4.1.3": + version: 4.3.0 + resolution: "css-select@npm:4.3.0" + dependencies: + boolbase: "npm:^1.0.0" + css-what: "npm:^6.0.1" + domhandler: "npm:^4.3.1" + domutils: "npm:^2.8.0" + nth-check: "npm:^2.0.1" + checksum: 10c0/a489d8e5628e61063d5a8fe0fa1cc7ae2478cb334a388a354e91cf2908154be97eac9fa7ed4dffe87a3e06cf6fcaa6016553115335c4fd3377e13dac7bd5a8e1 + languageName: node + linkType: hard + +"css-select@npm:^5.1.0": + version: 5.1.0 + resolution: "css-select@npm:5.1.0" + dependencies: + boolbase: "npm:^1.0.0" + css-what: "npm:^6.1.0" + domhandler: "npm:^5.0.2" + domutils: "npm:^3.0.1" + nth-check: "npm:^2.0.1" + checksum: 10c0/551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 + languageName: node + linkType: hard + +"css-tree@npm:^1.1.2, css-tree@npm:^1.1.3": + version: 1.1.3 + resolution: "css-tree@npm:1.1.3" + dependencies: + mdn-data: "npm:2.0.14" + source-map: "npm:^0.6.1" + checksum: 10c0/499a507bfa39b8b2128f49736882c0dd636b0cd3370f2c69f4558ec86d269113286b7df469afc955de6a68b0dba00bc533e40022a73698081d600072d5d83c1c + languageName: node + linkType: hard + +"css-what@npm:^6.0.1, css-what@npm:^6.1.0": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 + languageName: node + linkType: hard + +"css.escape@npm:^1.5.1": + version: 1.5.1 + resolution: "css.escape@npm:1.5.1" + checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 + languageName: node + linkType: hard + +"css@npm:^3.0.0": + version: 3.0.0 + resolution: "css@npm:3.0.0" + dependencies: + inherits: "npm:^2.0.4" + source-map: "npm:^0.6.1" + source-map-resolve: "npm:^0.6.0" + checksum: 10c0/c17cb4a46a39c11b00225f1314158a892828af34cdf3badc7e88084882e9f414e4902a1d59231c0854f310af30bde343fd8a9e79c6001426fe88af45d3312fe2 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + languageName: node + linkType: hard + +"cssnano-preset-default@npm:^5.2.14": + version: 5.2.14 + resolution: "cssnano-preset-default@npm:5.2.14" + dependencies: + css-declaration-sorter: "npm:^6.3.1" + cssnano-utils: "npm:^3.1.0" + postcss-calc: "npm:^8.2.3" + postcss-colormin: "npm:^5.3.1" + postcss-convert-values: "npm:^5.1.3" + postcss-discard-comments: "npm:^5.1.2" + postcss-discard-duplicates: "npm:^5.1.0" + postcss-discard-empty: "npm:^5.1.1" + postcss-discard-overridden: "npm:^5.1.0" + postcss-merge-longhand: "npm:^5.1.7" + postcss-merge-rules: "npm:^5.1.4" + postcss-minify-font-values: "npm:^5.1.0" + postcss-minify-gradients: "npm:^5.1.1" + postcss-minify-params: "npm:^5.1.4" + postcss-minify-selectors: "npm:^5.2.1" + postcss-normalize-charset: "npm:^5.1.0" + postcss-normalize-display-values: "npm:^5.1.0" + postcss-normalize-positions: "npm:^5.1.1" + postcss-normalize-repeat-style: "npm:^5.1.1" + postcss-normalize-string: "npm:^5.1.0" + postcss-normalize-timing-functions: "npm:^5.1.0" + postcss-normalize-unicode: "npm:^5.1.1" + postcss-normalize-url: "npm:^5.1.0" + postcss-normalize-whitespace: "npm:^5.1.1" + postcss-ordered-values: "npm:^5.1.3" + postcss-reduce-initial: "npm:^5.1.2" + postcss-reduce-transforms: "npm:^5.1.0" + postcss-svgo: "npm:^5.1.0" + postcss-unique-selectors: "npm:^5.1.1" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/d125bdb9ac007f97f920e30be953c550a8e7de0cb9298f67e0bc9744f4b920039046b5a6b817e345872836b08689af747f82fbf2189c8bd48da3e6f0c1087b89 + languageName: node + linkType: hard + +"cssnano-utils@npm:^3.1.0": + version: 3.1.0 + resolution: "cssnano-utils@npm:3.1.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/057508645a3e7584decede1045daa5b362dbfa2f5df96c3527c7d52e41e787a3442a56a8ea0c0af6a757f518e79a459ee580a35c323ad0d0eec912afd67d7630 + languageName: node + linkType: hard + +"cssnano@npm:^5.0.1, cssnano@npm:^5.0.6": + version: 5.1.15 + resolution: "cssnano@npm:5.1.15" + dependencies: + cssnano-preset-default: "npm:^5.2.14" + lilconfig: "npm:^2.0.3" + yaml: "npm:^1.10.2" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/4252e4f4edd7a0fbdd4017825c0f8632b7a12ecbfdd432d2ff7ec268d48eb956a0a10bbf209602181f9f84ceeecea4a864719ecde03aa2cc48f5d9636fcf5f9a + languageName: node + linkType: hard + +"csso@npm:^4.2.0": + version: 4.2.0 + resolution: "csso@npm:4.2.0" + dependencies: + css-tree: "npm:^1.1.2" + checksum: 10c0/f8c6b1300efaa0f8855a7905ae3794a29c6496e7f16a71dec31eb6ca7cfb1f058a4b03fd39b66c4deac6cb06bf6b4ba86da7b67d7320389cb9994d52b924b903 + languageName: node + linkType: hard + +"cssom@npm:^0.5.0": + version: 0.5.0 + resolution: "cssom@npm:0.5.0" + checksum: 10c0/8c4121c243baf0678c65dcac29b201ff0067dfecf978de9d5c83b2ff127a8fdefd2bfd54577f5ad8c80ed7d2c8b489ae01c82023545d010c4ecb87683fb403dd + languageName: node + linkType: hard + +"cssom@npm:~0.3.6": + version: 0.3.8 + resolution: "cssom@npm:0.3.8" + checksum: 10c0/d74017b209440822f9e24d8782d6d2e808a8fdd58fa626a783337222fe1c87a518ba944d4c88499031b4786e68772c99dfae616638d71906fe9f203aeaf14411 + languageName: node + linkType: hard + +"cssstyle@npm:^2.3.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" + dependencies: + cssom: "npm:~0.3.6" + checksum: 10c0/863400da2a458f73272b9a55ba7ff05de40d850f22eb4f37311abebd7eff801cf1cd2fb04c4c92b8c3daed83fe766e52e4112afb7bc88d86c63a9c2256a7d178 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 + languageName: node + linkType: hard + +"cypress@npm:12.2.0": + version: 12.2.0 + resolution: "cypress@npm:12.2.0" + dependencies: + "@cypress/request": "npm:^2.88.10" + "@cypress/xvfb": "npm:^1.2.4" + "@types/node": "npm:^14.14.31" + "@types/sinonjs__fake-timers": "npm:8.1.1" + "@types/sizzle": "npm:^2.3.2" + arch: "npm:^2.2.0" + blob-util: "npm:^2.0.2" + bluebird: "npm:^3.7.2" + buffer: "npm:^5.6.0" + cachedir: "npm:^2.3.0" + chalk: "npm:^4.1.0" + check-more-types: "npm:^2.24.0" + cli-cursor: "npm:^3.1.0" + cli-table3: "npm:~0.6.1" + commander: "npm:^5.1.0" + common-tags: "npm:^1.8.0" + dayjs: "npm:^1.10.4" + debug: "npm:^4.3.2" + enquirer: "npm:^2.3.6" + eventemitter2: "npm:6.4.7" + execa: "npm:4.1.0" + executable: "npm:^4.1.1" + extract-zip: "npm:2.0.1" + figures: "npm:^3.2.0" + fs-extra: "npm:^9.1.0" + getos: "npm:^3.2.1" + is-ci: "npm:^3.0.0" + is-installed-globally: "npm:~0.4.0" + lazy-ass: "npm:^1.6.0" + listr2: "npm:^3.8.3" + lodash: "npm:^4.17.21" + log-symbols: "npm:^4.0.0" + minimist: "npm:^1.2.6" + ospath: "npm:^1.2.2" + pretty-bytes: "npm:^5.6.0" + proxy-from-env: "npm:1.0.0" + request-progress: "npm:^3.0.0" + semver: "npm:^7.3.2" + supports-color: "npm:^8.1.1" + tmp: "npm:~0.2.1" + untildify: "npm:^4.0.0" + yauzl: "npm:^2.10.0" + bin: + cypress: bin/cypress + checksum: 10c0/2dcdf94c85b09143c502dad8929a0398460cc43b04fc703a6586fcb649b592c5745899d7ae205ebf73ce37327855df94f64e42967bec70a3563d54a7804fafc5 + languageName: node + linkType: hard + +"dag-jose@npm:^3.0.1": + version: 3.0.1 + resolution: "dag-jose@npm:3.0.1" + dependencies: + "@ipld/dag-cbor": "npm:^8.0.0" + multiformats: "npm:^10.0.1" + checksum: 10c0/f03261107743b70c43482981a3a5fb1d3c40ff97c130e1da86864d418071f7ed7d1c79a5b02ba700c036a95583527333a58d56841f3e4e379692009e57de719d + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 + languageName: node + linkType: hard + +"dargs@npm:^8.0.0": + version: 8.1.0 + resolution: "dargs@npm:8.1.0" + checksum: 10c0/08cbd1ee4ac1a16fb7700e761af2e3e22d1bdc04ac4f851926f552dde8f9e57714c0d04013c2cca1cda0cba8fb637e0f93ad15d5285547a939dd1989ee06a82d + languageName: node + linkType: hard + +"dashdash@npm:^1.12.0": + version: 1.14.1 + resolution: "dashdash@npm:1.14.1" + dependencies: + assert-plus: "npm:^1.0.0" + checksum: 10c0/64589a15c5bd01fa41ff7007e0f2c6552c5ef2028075daa16b188a3721f4ba001841bf306dfc2eee6e2e6e7f76b38f5f17fb21fa847504192290ffa9e150118a + languageName: node + linkType: hard + +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: "npm:^2.0.6" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + checksum: 10c0/051c3aaaf3e961904f136aab095fcf6dff4db23a7fc759dd8ba7b3e6ba03fc07ef608086caad8ab910d864bd3b5e57d0d2f544725653d77c96a2c971567045f4 + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-buffer@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583 + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "data-view-byte-offset@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f + languageName: node + linkType: hard + +"date-fns@npm:^2.29.3": + version: 2.30.0 + resolution: "date-fns@npm:2.30.0" + dependencies: + "@babel/runtime": "npm:^7.21.0" + checksum: 10c0/e4b521fbf22bc8c3db332bbfb7b094fd3e7627de0259a9d17c7551e2d2702608a7307a449206065916538e384f37b181565447ce2637ae09828427aed9cb5581 + languageName: node + linkType: hard + +"dateformat@npm:^3.0.0": + version: 3.0.3 + resolution: "dateformat@npm:3.0.3" + checksum: 10c0/2effb8bef52ff912f87a05e4adbeacff46353e91313ad1ea9ed31412db26849f5a0fcc7e3ce36dbfb84fc6c881a986d5694f84838ad0da7000d5150693e78678 + languageName: node + linkType: hard + +"dayjs@npm:1.11.10": + version: 1.11.10 + resolution: "dayjs@npm:1.11.10" + checksum: 10c0/4de9af50639d47df87f2e15fa36bb07e0f9ed1e9c52c6caa1482788ee9a384d668f1dbd00c54f82aaab163db07d61d2899384b8254da3a9184fc6deca080e2fe + languageName: node + linkType: hard + +"dayjs@npm:^1.10.4": + version: 1.11.13 + resolution: "dayjs@npm:1.11.13" + checksum: 10c0/a3caf6ac8363c7dade9d1ee797848ddcf25c1ace68d9fe8678ecf8ba0675825430de5d793672ec87b24a69bf04a1544b176547b2539982275d5542a7955f35b7 + languageName: node + linkType: hard + +"debug@npm:2.6.9, debug@npm:^2.6.9": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: "npm:2.0.0" + checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:~4.3.1, debug@npm:~4.3.2": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b + languageName: node + linkType: hard + +"debug@npm:^3.1.0, debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + +"debug@npm:~3.1.0": + version: 3.1.0 + resolution: "debug@npm:3.1.0" + dependencies: + ms: "npm:2.0.0" + checksum: 10c0/5bff34a352d7b2eaa31886eeaf2ee534b5461ec0548315b2f9f80bd1d2533cab7df1fa52e130ce27bc31c3945fbffb0fc72baacdceb274b95ce853db89254ea4 + languageName: node + linkType: hard + +"debuglog@npm:^1.0.1": + version: 1.0.1 + resolution: "debuglog@npm:1.0.1" + checksum: 10c0/d98ac9abe6a528fcbb4d843b1caf5a9116998c76e1263d8ff4db2c086aa96fa7ea4c752a81050fa2e4304129ef330e6e4dc9dd4d47141afd7db80bf699f08219 + languageName: node + linkType: hard + +"decamelize-keys@npm:^1.1.0": + version: 1.1.1 + resolution: "decamelize-keys@npm:1.1.1" + dependencies: + decamelize: "npm:^1.1.0" + map-obj: "npm:^1.0.0" + checksum: 10c0/4ca385933127437658338c65fb9aead5f21b28d3dd3ccd7956eb29aab0953b5d3c047fbc207111672220c71ecf7a4d34f36c92851b7bbde6fca1a02c541bdd7d + languageName: node + linkType: hard + +"decamelize@npm:^1.1.0, decamelize@npm:^1.2.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.0, decode-uri-component@npm:^0.2.2": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 + languageName: node + linkType: hard + +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" + dependencies: + mimic-response: "npm:^3.1.0" + checksum: 10c0/bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e + languageName: node + linkType: hard + +"dedent@npm:^1.0.0": + version: 1.5.3 + resolution: "dedent@npm:1.5.3" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/d94bde6e6f780be4da4fd760288fcf755ec368872f4ac5218197200d86430aeb8d90a003a840bff1c20221188e3f23adced0119cb811c6873c70d0ac66d12832 + languageName: node + linkType: hard + +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.0" + call-bind: "npm:^1.0.5" + es-get-iterator: "npm:^1.1.3" + get-intrinsic: "npm:^1.2.2" + is-arguments: "npm:^1.1.1" + is-array-buffer: "npm:^3.0.2" + is-date-object: "npm:^1.0.5" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + isarray: "npm:^2.0.5" + object-is: "npm:^1.1.5" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.4" + regexp.prototype.flags: "npm:^1.5.1" + side-channel: "npm:^1.0.4" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.13" + checksum: 10c0/a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f + languageName: node + linkType: hard + +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"default-gateway@npm:^6.0.3": + version: 6.0.3 + resolution: "default-gateway@npm:6.0.3" + dependencies: + execa: "npm:^5.0.0" + checksum: 10c0/5184f9e6e105d24fb44ade9e8741efa54bb75e84625c1ea78c4ef8b81dff09ca52d6dbdd1185cf0dc655bb6b282a64fffaf7ed2dd561b8d9ad6f322b1f039aba + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + +"deferred-leveldown@npm:~0.2.0": + version: 0.2.0 + resolution: "deferred-leveldown@npm:0.2.0" + dependencies: + abstract-leveldown: "npm:~0.12.1" + checksum: 10c0/486bb9b54350a50ed326d54ef8dcda7decaa1fdcb61300d11129624986f83230a278f5055598862e2ea80a6a94d6193f1550a2216169fa2b436bd0649260827e + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 10c0/2d6cc366262dc0cb8096e429368e44052fdf43ed48e53ad84cc7c9407f890301aa5fcb80d0995abaaf842b3949f154d060be4160f7a46cb2bc2f7726c81526f5 + languageName: node + linkType: hard + +"del@npm:^6.0.0": + version: 6.1.1 + resolution: "del@npm:6.1.1" + dependencies: + globby: "npm:^11.0.1" + graceful-fs: "npm:^4.2.4" + is-glob: "npm:^4.0.1" + is-path-cwd: "npm:^2.2.0" + is-path-inside: "npm:^3.0.2" + p-map: "npm:^4.0.0" + rimraf: "npm:^3.0.2" + slash: "npm:^3.0.0" + checksum: 10c0/8a095c5ccade42c867a60252914ae485ec90da243d735d1f63ec1e64c1cfbc2b8810ad69a29ab6326d159d4fddaa2f5bad067808c42072351ec458efff86708f + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: 10c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 + languageName: node + linkType: hard + +"depd@npm:2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c + languageName: node + linkType: hard + +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 + languageName: node + linkType: hard + +"deprecation@npm:^2.0.0": + version: 2.3.1 + resolution: "deprecation@npm:2.3.1" + checksum: 10c0/23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 + languageName: node + linkType: hard + +"des.js@npm:^1.0.0": + version: 1.1.0 + resolution: "des.js@npm:1.1.0" + dependencies: + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 + languageName: node + linkType: hard + +"destr@npm:^2.0.3": + version: 2.0.3 + resolution: "destr@npm:2.0.3" + checksum: 10c0/10e7eff5149e2839a4dd29a1e9617c3c675a3b53608d78d74fc6f4abc31daa977e6de08e0eea78965527a0d5a35467ae2f9624e0a4646d54aa1162caa094473e + languageName: node + linkType: hard + +"destroy@npm:1.2.0": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 + languageName: node + linkType: hard + +"detect-browser@npm:5.3.0, detect-browser@npm:^5.2.0": + version: 5.3.0 + resolution: "detect-browser@npm:5.3.0" + checksum: 10c0/88d49b70ce3836e7971345b2ebdd486ad0d457d1e4f066540d0c12f9210c8f731ccbed955fcc9af2f048f5d4629702a8e46bedf5bcad42ad49a3a0927bfd5a76 + languageName: node + linkType: hard + +"detect-indent@npm:6.1.0": + version: 6.1.0 + resolution: "detect-indent@npm:6.1.0" + checksum: 10c0/dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 + languageName: node + linkType: hard + +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d + languageName: node + linkType: hard + +"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.1": + version: 2.0.3 + resolution: "detect-libc@npm:2.0.3" + checksum: 10c0/88095bda8f90220c95f162bf92cad70bd0e424913e655c20578600e35b91edc261af27531cf160a331e185c0ced93944bc7e09939143225f56312d7fd800fdb7 + languageName: node + linkType: hard + +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + +"detect-node@npm:^2.0.4": + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 10c0/f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 + languageName: node + linkType: hard + +"dezalgo@npm:^1.0.0": + version: 1.0.4 + resolution: "dezalgo@npm:1.0.4" + dependencies: + asap: "npm:^2.0.0" + wrappy: "npm:1" + checksum: 10c0/8a870ed42eade9a397e6141fe5c025148a59ed52f1f28b1db5de216b4d57f0af7a257070c3af7ce3d5508c1ce9dd5009028a76f4b2cc9370dc56551d2355fad8 + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 + languageName: node + linkType: hard + +"diff@npm:^5.1.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 + languageName: node + linkType: hard + +"diffie-hellman@npm:^5.0.0": + version: 5.0.3 + resolution: "diffie-hellman@npm:5.0.3" + dependencies: + bn.js: "npm:^4.1.0" + miller-rabin: "npm:^4.0.0" + randombytes: "npm:^2.0.0" + checksum: 10c0/ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf + languageName: node + linkType: hard + +"dijkstrajs@npm:^1.0.1": + version: 1.0.3 + resolution: "dijkstrajs@npm:1.0.3" + checksum: 10c0/2183d61ac1f25062f3c3773f3ea8d9f45ba164a00e77e07faf8cc5750da966222d1e2ce6299c875a80f969190c71a0973042192c5624d5223e4ed196ff584c99 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.0, dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"dns-over-http-resolver@npm:^2.1.0": + version: 2.1.3 + resolution: "dns-over-http-resolver@npm:2.1.3" + dependencies: + debug: "npm:^4.3.1" + native-fetch: "npm:^4.0.2" + receptacle: "npm:^1.3.2" + undici: "npm:^5.12.0" + checksum: 10c0/d9470e46bb1722e5120b07665d57b1f5faed1e394e14b59295fbe2e6465a979aed952da081bfc352c85e39e4b5d24d34fe96ea21251a2bda0ea90d5427788d9e + languageName: node + linkType: hard + +"dns-packet@npm:^5.2.2, dns-packet@npm:^5.6.1": + version: 5.6.1 + resolution: "dns-packet@npm:5.6.1" + dependencies: + "@leichtgewicht/ip-codec": "npm:^2.0.1" + checksum: 10c0/8948d3d03063fb68e04a1e386875f8c3bcc398fc375f535f2b438fad8f41bf1afa6f5e70893ba44f4ae884c089247e0a31045722fa6ff0f01d228da103f1811d + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.5.6, dom-accessibility-api@npm:^0.5.9": + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 10c0/b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053 + languageName: node + linkType: hard + +"dom-serializer@npm:^1.0.1": + version: 1.4.1 + resolution: "dom-serializer@npm:1.4.1" + dependencies: + domelementtype: "npm:^2.0.1" + domhandler: "npm:^4.2.0" + entities: "npm:^2.0.0" + checksum: 10c0/67d775fa1ea3de52035c98168ddcd59418356943b5eccb80e3c8b3da53adb8e37edb2cc2f885802b7b1765bf5022aec21dfc32910d7f9e6de4c3148f095ab5e0 + languageName: node + linkType: hard + +"dom-serializer@npm:^2.0.0": + version: 2.0.0 + resolution: "dom-serializer@npm:2.0.0" + dependencies: + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.2" + entities: "npm:^4.2.0" + checksum: 10c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 + languageName: node + linkType: hard + +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": + version: 2.3.0 + resolution: "domelementtype@npm:2.3.0" + checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 + languageName: node + linkType: hard + +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/774277cd9d4df033f852196e3c0077a34dbd15a96baa4d166e0e47138a80f4c0bdf0d94e4703e6ff5883cec56bb821a6fff84402d8a498e31de7c87eb932a294 + languageName: node + linkType: hard + +"domhandler@npm:^4.2.0, domhandler@npm:^4.2.2, domhandler@npm:^4.3.1": + version: 4.3.1 + resolution: "domhandler@npm:4.3.1" + dependencies: + domelementtype: "npm:^2.2.0" + checksum: 10c0/5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b + languageName: node + linkType: hard + +"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": + version: 5.0.3 + resolution: "domhandler@npm:5.0.3" + dependencies: + domelementtype: "npm:^2.3.0" + checksum: 10c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a + languageName: node + linkType: hard + +"domutils@npm:^2.8.0": + version: 2.8.0 + resolution: "domutils@npm:2.8.0" + dependencies: + dom-serializer: "npm:^1.0.1" + domelementtype: "npm:^2.2.0" + domhandler: "npm:^4.2.0" + checksum: 10c0/d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db + languageName: node + linkType: hard + +"domutils@npm:^3.0.1": + version: 3.1.0 + resolution: "domutils@npm:3.1.0" + dependencies: + dom-serializer: "npm:^2.0.0" + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + checksum: 10c0/342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 + languageName: node + linkType: hard + +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 + languageName: node + linkType: hard + +"dot-prop@npm:^5.1.0": + version: 5.3.0 + resolution: "dot-prop@npm:5.3.0" + dependencies: + is-obj: "npm:^2.0.0" + checksum: 10c0/93f0d343ef87fe8869320e62f2459f7e70f49c6098d948cc47e060f4a3f827d0ad61e83cb82f2bd90cd5b9571b8d334289978a43c0f98fea4f0e99ee8faa0599 + languageName: node + linkType: hard + +"dotenv-expand@npm:^5.1.0": + version: 5.1.0 + resolution: "dotenv-expand@npm:5.1.0" + checksum: 10c0/24ac633de853ef474d0421cc639328b7134109c8dc2baaa5e3afb7495af5e9237136d7e6971e55668e4dce915487eb140967cdd2b3e99aa439e0f6bf8b56faeb + languageName: node + linkType: hard + +"dotenv@npm:^7.0.0": + version: 7.0.0 + resolution: "dotenv@npm:7.0.0" + checksum: 10c0/4d834d09d23ebd284e701c4204172659a7dcd51116f11c29c575ae6d918ccd4760a3383bdfd83cfbed42f061266b787f8e56452b952638867ea5476be875eb27 + languageName: node + linkType: hard + +"dotenv@npm:~10.0.0": + version: 10.0.0 + resolution: "dotenv@npm:10.0.0" + checksum: 10c0/2d8d4ba64bfaff7931402aa5e8cbb8eba0acbc99fe9ae442300199af021079eafa7171ce90e150821a5cb3d74f0057721fbe7ec201a6044b68c8a7615f8c123f + languageName: node + linkType: hard + +"duplexer2@npm:~0.1.0": + version: 0.1.4 + resolution: "duplexer2@npm:0.1.4" + dependencies: + readable-stream: "npm:^2.0.2" + checksum: 10c0/0765a4cc6fe6d9615d43cc6dbccff6f8412811d89a6f6aa44828ca9422a0a469625ce023bf81cee68f52930dbedf9c5716056ff264ac886612702d134b5e39b4 + languageName: node + linkType: hard + +"duplexer@npm:^0.1.1": + version: 0.1.2 + resolution: "duplexer@npm:0.1.2" + checksum: 10c0/c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 + languageName: node + linkType: hard + +"duplexify@npm:^4.1.2": + version: 4.1.3 + resolution: "duplexify@npm:4.1.3" + dependencies: + end-of-stream: "npm:^1.4.1" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + stream-shift: "npm:^1.0.2" + checksum: 10c0/8a7621ae95c89f3937f982fe36d72ea997836a708471a75bb2a0eecde3330311b1e128a6dad510e0fd64ace0c56bff3484ed2e82af0e465600c82117eadfbda5 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"ecc-jsbn@npm:~0.1.1": + version: 0.1.2 + resolution: "ecc-jsbn@npm:0.1.2" + dependencies: + jsbn: "npm:~0.1.0" + safer-buffer: "npm:^2.1.0" + checksum: 10c0/6cf168bae1e2dad2e46561d9af9cbabfbf5ff592176ad4e9f0f41eaaf5fe5e10bb58147fe0a804de62b1ee9dad42c28810c88d652b21b6013c47ba8efa274ca1 + languageName: node + linkType: hard + +"eciesjs@npm:^0.3.15": + version: 0.3.20 + resolution: "eciesjs@npm:0.3.20" + dependencies: + "@types/secp256k1": "npm:^4.0.6" + futoin-hkdf: "npm:^1.5.3" + secp256k1: "npm:^5.0.0" + checksum: 10c0/b8706ef28f6f3721002c901afe97d29976a12cec0f0e9a15728741d69006449ad2a6ad75688e52d18d5c1341704ff6706ada30ca2fd4a88d7ca610bc651492a8 + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 + languageName: node + linkType: hard + +"ejs@npm:^3.1.10, ejs@npm:^3.1.7": + version: 3.1.10 + resolution: "ejs@npm:3.1.10" + dependencies: + jake: "npm:^10.8.5" + bin: + ejs: bin/cli.js + checksum: 10c0/52eade9e68416ed04f7f92c492183340582a36482836b11eab97b159fcdcfdedc62233a1bf0bf5e5e1851c501f2dca0e2e9afd111db2599e4e7f53ee29429ae1 + languageName: node + linkType: hard + +"electron-fetch@npm:^1.7.2": + version: 1.9.1 + resolution: "electron-fetch@npm:1.9.1" + dependencies: + encoding: "npm:^0.1.13" + checksum: 10c0/650d91e7957ed9d7e054a5cf2d3f57ed2fae859cbe51e6910b75699f33fcf08a9cd812d418d14280da6fc58e6914dfc3177ca7b081308c4074326ced47409cd8 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.28": + version: 1.5.32 + resolution: "electron-to-chromium@npm:1.5.32" + checksum: 10c0/d0c0c418fae6f7714fb6cfeb8f6a74a9504cf41ed6a4119d5388d94442ee224238c331bacc5917f2c89e3ffebd1b9f870ea5c0951c473ca7e58debef0f3e9137 + languageName: node + linkType: hard + +"elliptic@npm:6.5.4": + version: 6.5.4 + resolution: "elliptic@npm:6.5.4" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/5f361270292c3b27cf0843e84526d11dec31652f03c2763c6c2b8178548175ff5eba95341dd62baff92b2265d1af076526915d8af6cc9cb7559c44a62f8ca6e2 + languageName: node + linkType: hard + +"elliptic@npm:6.5.7, elliptic@npm:^6.5.3, elliptic@npm:^6.5.4, elliptic@npm:^6.5.5, elliptic@npm:^6.5.7": + version: 6.5.7 + resolution: "elliptic@npm:6.5.7" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/799959b6c54ea3564e8961f35abdf8c77e37617f3051614b05ab1fb6a04ddb65bd1caa75ed1bae375b15dda312a0f79fed26ebe76ecf05c5a7af244152a601b8 + languageName: node + linkType: hard + +"email-addresses@npm:^5.0.0": + version: 5.0.0 + resolution: "email-addresses@npm:5.0.0" + checksum: 10c0/fc8a6f84e378bbe601ce39a3d8d86bc7e4584030ae9eb1938e12943f7fb5207e5fd7ae449cced3bea70968a519ade560d55ca170208c3f1413d7d25d8613a577 + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"emojis-list@npm:^3.0.0": + version: 3.0.0 + resolution: "emojis-list@npm:3.0.0" + checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b + languageName: node + linkType: hard + +"encode-utf8@npm:^1.0.3": + version: 1.0.3 + resolution: "encode-utf8@npm:1.0.3" + checksum: 10c0/6b3458b73e868113d31099d7508514a5c627d8e16d1e0542d1b4e3652299b8f1f590c468e2b9dcdf1b4021ee961f31839d0be9d70a7f2a8a043c63b63c9b3a88 + languageName: node + linkType: hard + +"encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec + languageName: node + linkType: hard + +"encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb + languageName: node + linkType: hard + +"encoding@npm:^0.1.12, encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.0, end-of-stream@npm:^1.4.1": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: "npm:^1.4.0" + checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + languageName: node + linkType: hard + +"engine.io-client@npm:~6.6.1": + version: 6.6.1 + resolution: "engine.io-client@npm:6.6.1" + dependencies: + "@socket.io/component-emitter": "npm:~3.1.0" + debug: "npm:~4.3.1" + engine.io-parser: "npm:~5.2.1" + ws: "npm:~8.17.1" + xmlhttprequest-ssl: "npm:~2.1.1" + checksum: 10c0/f0ba384a86c2965b8016907a970e2b71b792e951cb97013b237a6f13ecedc7444b0262c7886e62f6807ad761418f3e1ed2442179722e67e5f1d7f55ff6590514 + languageName: node + linkType: hard + +"engine.io-parser@npm:~5.2.1": + version: 5.2.3 + resolution: "engine.io-parser@npm:5.2.3" + checksum: 10c0/ed4900d8dbef470ab3839ccf3bfa79ee518ea8277c7f1f2759e8c22a48f64e687ea5e474291394d0c94f84054749fd93f3ef0acb51fa2f5f234cc9d9d8e7c536 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.10.0, enhanced-resolve@npm:^5.14.1, enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.7.0": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/81a0515675eca17efdba2cf5bad87abc91a528fc1191aad50e275e74f045b41506167d420099022da7181c8d787170ea41e4a11a0b10b7a16f6237daecb15370 + languageName: node + linkType: hard + +"enquirer@npm:^2.3.6": + version: 2.4.1 + resolution: "enquirer@npm:2.4.1" + dependencies: + ansi-colors: "npm:^4.1.1" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 + languageName: node + linkType: hard + +"enquirer@npm:~2.3.6": + version: 2.3.6 + resolution: "enquirer@npm:2.3.6" + dependencies: + ansi-colors: "npm:^4.1.1" + checksum: 10c0/8e070e052c2c64326a2803db9084d21c8aaa8c688327f133bf65c4a712586beb126fd98c8a01cfb0433e82a4bd3b6262705c55a63e0f7fb91d06b9cedbde9a11 + languageName: node + linkType: hard + +"entities@npm:^2.0.0": + version: 2.2.0 + resolution: "entities@npm:2.2.0" + checksum: 10c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 + languageName: node + linkType: hard + +"entities@npm:^3.0.1": + version: 3.0.1 + resolution: "entities@npm:3.0.1" + checksum: 10c0/2d93f48fd86de0b0ed8ee34456aa47b4e74a916a5e663cfcc7048302e2c7e932002926daf5a00ad6d5691e3c90673a15d413704d86d7e1b9532f9bc00d975590 + languageName: node + linkType: hard + +"entities@npm:^4.2.0, entities@npm:^4.3.0, entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + languageName: node + linkType: hard + +"entities@npm:~2.1.0": + version: 2.1.0 + resolution: "entities@npm:2.1.0" + checksum: 10c0/dd96ed95f7e017b7fbbcdd39bd6dc3dea6638f747c00610b53f23ea461ac409af87670f313805d85854bfce04f96e17d83575f75b3b2920365d78678ccd2a405 + languageName: node + linkType: hard + +"env-ci@npm:^5.0.0": + version: 5.5.0 + resolution: "env-ci@npm:5.5.0" + dependencies: + execa: "npm:^5.0.0" + fromentries: "npm:^1.3.2" + java-properties: "npm:^1.0.0" + checksum: 10c0/5175b4ccc464929811bac4bd5498443bc519d4ee3053d4cfb65b468ee41aaca342e91ff7f92a5a8af5fe801abf92007230dfa94e5d80040962d025d3e19f1e5f + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0, env-paths@npm:^2.2.1": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"err-code@npm:^3.0.1": + version: 3.0.1 + resolution: "err-code@npm:3.0.1" + checksum: 10c0/78b1c50500adebde6699b8d27b8ce4728c132dcaad75b5d18ba44f6ccb28769d1fff8368ae1164be4559dac8b95d4e26bb15b480ba9999e0cd0f0c64beaf1b24 + languageName: node + linkType: hard + +"errno@npm:^0.1.1, errno@npm:~0.1.1": + version: 0.1.8 + resolution: "errno@npm:0.1.8" + dependencies: + prr: "npm:~1.0.1" + bin: + errno: cli.js + checksum: 10c0/83758951967ec57bf00b5f5b7dc797e6d65a6171e57ea57adcf1bd1a0b477fd9b5b35fae5be1ff18f4090ed156bce1db749fe7e317aac19d485a5d150f6a4936 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1, error-ex@npm:^1.3.2": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + languageName: node + linkType: hard + +"error-stack-parser@npm:^2.0.6": + version: 2.1.4 + resolution: "error-stack-parser@npm:2.1.4" + dependencies: + stackframe: "npm:^1.3.4" + checksum: 10c0/7679b780043c98b01fc546725484e0cfd3071bf5c906bbe358722972f04abf4fc3f0a77988017665bab367f6ef3fc2d0185f7528f45966b83e7c99c02d5509b9 + languageName: node + linkType: hard + +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + data-view-buffer: "npm:^1.0.1" + data-view-byte-length: "npm:^1.0.1" + data-view-byte-offset: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-set-tostringtag: "npm:^2.0.3" + es-to-primitive: "npm:^1.2.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.1" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.3" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.13.1" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.2" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.9" + string.prototype.trimend: "npm:^1.0.8" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.2" + typed-array-byte-length: "npm:^1.0.1" + typed-array-byte-offset: "npm:^1.0.2" + typed-array-length: "npm:^1.0.6" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10c0/d27e9afafb225c6924bee9971a7f25f20c314f2d6cb93a63cada4ac11dcf42040896a6c22e5fb8f2a10767055ed4ddf400be3b1eb12297d281726de470b75666 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 + languageName: node + linkType: hard + +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + has-symbols: "npm:^1.0.3" + is-arguments: "npm:^1.1.1" + is-map: "npm:^2.0.2" + is-set: "npm:^2.0.2" + is-string: "npm:^1.0.7" + isarray: "npm:^2.0.5" + stop-iteration-iterator: "npm:^1.0.0" + checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.0.19": + version: 1.0.19 + resolution: "es-iterator-helpers@npm:1.0.19" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.3" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + iterator.prototype: "npm:^1.1.2" + safe-array-concat: "npm:^1.1.2" + checksum: 10c0/ae8f0241e383b3d197383b9842c48def7fce0255fb6ed049311b686ce295595d9e389b466f6a1b7d4e7bb92d82f5e716d6fae55e20c1040249bf976743b038c5 + languageName: node + linkType: hard + +"es-module-lexer@npm:^0.9.0": + version: 0.9.3 + resolution: "es-module-lexer@npm:0.9.3" + checksum: 10c0/be77d73aee709fdc68d22b9938da81dfee3bc45e8d601629258643fe5bfdab253d6e2540035e035cfa8cf52a96366c1c19b46bcc23b4507b1d44e5907d2e7f6c + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.1.1, es-module-lexer@npm:^1.2.1": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: 10c0/300a469488c2f22081df1e4c8398c78db92358496e639b0df7f89ac6455462aaf5d8893939087c1a1cbcbf20eed4610c70e0bcb8f3e4b0d80a5d2611c539408c + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0": + version: 1.0.0 + resolution: "es-object-atoms@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" + dependencies: + get-intrinsic: "npm:^1.2.4" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.1" + checksum: 10c0/f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 + languageName: node + linkType: hard + +"esbuild-wasm@npm:0.17.19": + version: 0.17.19 + resolution: "esbuild-wasm@npm:0.17.19" + bin: + esbuild: bin/esbuild + checksum: 10c0/42b1800031cd3e9504ef328de225b36af61d995c000c1b2dcfb9f6c7b9bb35b43a531d19fa285ecadf4584cc4db940ad59ba666b4b9b6011670302ceb8b52273 + languageName: node + linkType: hard + +"esbuild-wasm@npm:>=0.13.8": + version: 0.24.0 + resolution: "esbuild-wasm@npm:0.24.0" + bin: + esbuild: bin/esbuild + checksum: 10c0/168917909d5f6714843f218fc722c113c1f53b6c9f4f315f3d55dad1a9b6b8d3194a5f4dfdd67405927b308a72aa5ba175b44d2f1b95c993a943a674eea1e1ad + languageName: node + linkType: hard + +"esbuild@npm:0.17.19, esbuild@npm:^0.17.5": + version: 0.17.19 + resolution: "esbuild@npm:0.17.19" + dependencies: + "@esbuild/android-arm": "npm:0.17.19" + "@esbuild/android-arm64": "npm:0.17.19" + "@esbuild/android-x64": "npm:0.17.19" + "@esbuild/darwin-arm64": "npm:0.17.19" + "@esbuild/darwin-x64": "npm:0.17.19" + "@esbuild/freebsd-arm64": "npm:0.17.19" + "@esbuild/freebsd-x64": "npm:0.17.19" + "@esbuild/linux-arm": "npm:0.17.19" + "@esbuild/linux-arm64": "npm:0.17.19" + "@esbuild/linux-ia32": "npm:0.17.19" + "@esbuild/linux-loong64": "npm:0.17.19" + "@esbuild/linux-mips64el": "npm:0.17.19" + "@esbuild/linux-ppc64": "npm:0.17.19" + "@esbuild/linux-riscv64": "npm:0.17.19" + "@esbuild/linux-s390x": "npm:0.17.19" + "@esbuild/linux-x64": "npm:0.17.19" + "@esbuild/netbsd-x64": "npm:0.17.19" + "@esbuild/openbsd-x64": "npm:0.17.19" + "@esbuild/sunos-x64": "npm:0.17.19" + "@esbuild/win32-arm64": "npm:0.17.19" + "@esbuild/win32-ia32": "npm:0.17.19" + "@esbuild/win32-x64": "npm:0.17.19" + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/c7ac14bfaaebe4745d5d18347b4f6854fd1140acb9389e88dbfa5c20d4e2122451d9647d5498920470a880a605d6e5502b5c2102da6c282b01f129ddd49d2874 + languageName: node + linkType: hard + +"esbuild@npm:>=0.13.8": + version: 0.24.0 + resolution: "esbuild@npm:0.24.0" + dependencies: + "@esbuild/aix-ppc64": "npm:0.24.0" + "@esbuild/android-arm": "npm:0.24.0" + "@esbuild/android-arm64": "npm:0.24.0" + "@esbuild/android-x64": "npm:0.24.0" + "@esbuild/darwin-arm64": "npm:0.24.0" + "@esbuild/darwin-x64": "npm:0.24.0" + "@esbuild/freebsd-arm64": "npm:0.24.0" + "@esbuild/freebsd-x64": "npm:0.24.0" + "@esbuild/linux-arm": "npm:0.24.0" + "@esbuild/linux-arm64": "npm:0.24.0" + "@esbuild/linux-ia32": "npm:0.24.0" + "@esbuild/linux-loong64": "npm:0.24.0" + "@esbuild/linux-mips64el": "npm:0.24.0" + "@esbuild/linux-ppc64": "npm:0.24.0" + "@esbuild/linux-riscv64": "npm:0.24.0" + "@esbuild/linux-s390x": "npm:0.24.0" + "@esbuild/linux-x64": "npm:0.24.0" + "@esbuild/netbsd-x64": "npm:0.24.0" + "@esbuild/openbsd-arm64": "npm:0.24.0" + "@esbuild/openbsd-x64": "npm:0.24.0" + "@esbuild/sunos-x64": "npm:0.24.0" + "@esbuild/win32-arm64": "npm:0.24.0" + "@esbuild/win32-ia32": "npm:0.24.0" + "@esbuild/win32-x64": "npm:0.24.0" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/9f1aadd8d64f3bff422ae78387e66e51a5e09de6935a6f987b6e4e189ed00fdc2d1bc03d2e33633b094008529c8b6e06c7ad1a9782fb09fec223bf95998c0683 + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"escape-html@npm:~1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 + languageName: node + linkType: hard + +"escape-string-regexp@npm:2.0.0, escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"escodegen@npm:^2.0.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: "npm:^4.0.1" + estraverse: "npm:^5.2.0" + esutils: "npm:^2.0.2" + source-map: "npm:~0.6.1" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 + languageName: node + linkType: hard + +"eslint-config-next@npm:14.2.5": + version: 14.2.5 + resolution: "eslint-config-next@npm:14.2.5" + dependencies: + "@next/eslint-plugin-next": "npm:14.2.5" + "@rushstack/eslint-patch": "npm:^1.3.3" + "@typescript-eslint/parser": "npm:^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0" + eslint-import-resolver-node: "npm:^0.3.6" + eslint-import-resolver-typescript: "npm:^3.5.2" + eslint-plugin-import: "npm:^2.28.1" + eslint-plugin-jsx-a11y: "npm:^6.7.1" + eslint-plugin-react: "npm:^7.33.2" + eslint-plugin-react-hooks: "npm:^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: ">=3.3.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/a8b51095182dec7a2775e6779269cfea8ba1b668392ade93d3264c43e7a5f3f673a1bf8b7823767f4e6ca26358a431b91fab7376d2b852bcc7310b8449f2c3d3 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:8.1.0": + version: 8.1.0 + resolution: "eslint-config-prettier@npm:8.1.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/1431a5b78027c47fa776a46fdcedbb53fda8d627ee7007935e7244f103a7be79cf576e8a8a6cf1c468239d144380a46c0756088e5da7da83f2b2ca89f704b6f7 + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.6, eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" + dependencies: + debug: "npm:^3.2.7" + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 + languageName: node + linkType: hard + +"eslint-import-resolver-typescript@npm:^3.5.2": + version: 3.6.3 + resolution: "eslint-import-resolver-typescript@npm:3.6.3" + dependencies: + "@nolyfill/is-core-module": "npm:1.0.39" + debug: "npm:^4.3.5" + enhanced-resolve: "npm:^5.15.0" + eslint-module-utils: "npm:^2.8.1" + fast-glob: "npm:^3.3.2" + get-tsconfig: "npm:^4.7.5" + is-bun-module: "npm:^1.0.2" + is-glob: "npm:^4.0.3" + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + eslint-plugin-import-x: "*" + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + checksum: 10c0/5933b00791b7b077725b9ba9a85327d2e2dc7c8944c18a868feb317a0bf0e1e77aed2254c9c5e24dcc49360d119331d2c15281837f4269592965ace380a75111 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.12.0, eslint-module-utils@npm:^2.7.3, eslint-module-utils@npm:^2.8.1": + version: 2.12.0 + resolution: "eslint-module-utils@npm:2.12.0" + dependencies: + debug: "npm:^3.2.7" + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/4d8b46dcd525d71276f9be9ffac1d2be61c9d54cc53c992e6333cf957840dee09381842b1acbbb15fc6b255ebab99cd481c5007ab438e5455a14abe1a0468558 + languageName: node + linkType: hard + +"eslint-plugin-cypress@npm:2.10.3": + version: 2.10.3 + resolution: "eslint-plugin-cypress@npm:2.10.3" + dependencies: + globals: "npm:^11.12.0" + peerDependencies: + eslint: ">= 3.2.1" + checksum: 10c0/d575bcbdcc83c81e26a233d43ad2869e479a0a904d12f842edd131b9dcecc816a1bc5fdbca4c8d16dbc58bc4581683f638b2924009d1ce12d589e5af9a8233e4 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:2.26.0": + version: 2.26.0 + resolution: "eslint-plugin-import@npm:2.26.0" + dependencies: + array-includes: "npm:^3.1.4" + array.prototype.flat: "npm:^1.2.5" + debug: "npm:^2.6.9" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.6" + eslint-module-utils: "npm:^2.7.3" + has: "npm:^1.0.3" + is-core-module: "npm:^2.8.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.values: "npm:^1.1.5" + resolve: "npm:^1.22.0" + tsconfig-paths: "npm:^3.14.1" + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + checksum: 10c0/d4b6f22dbbc72997b37ccb6f5948e7ae02f1f93bb2a1da7dea830ecd4d7f0ba60c69418cb298d54ffa0aa854f96b2ad9df3d21ca2bff6617e625cd26266eb74f + languageName: node + linkType: hard + +"eslint-plugin-import@npm:^2.28.1": + version: 2.31.0 + resolution: "eslint-plugin-import@npm:2.31.0" + dependencies: + "@rtsao/scc": "npm:^1.1.0" + array-includes: "npm:^3.1.8" + array.prototype.findlastindex: "npm:^1.2.5" + array.prototype.flat: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.2" + debug: "npm:^3.2.7" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.12.0" + hasown: "npm:^2.0.2" + is-core-module: "npm:^2.15.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + object.groupby: "npm:^1.0.3" + object.values: "npm:^1.2.0" + semver: "npm:^6.3.1" + string.prototype.trimend: "npm:^1.0.8" + tsconfig-paths: "npm:^3.15.0" + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: 10c0/e21d116ddd1900e091ad120b3eb68c5dd5437fe2c930f1211781cd38b246f090a6b74d5f3800b8255a0ed29782591521ad44eb21c5534960a8f1fb4040fd913a + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:6.6.1": + version: 6.6.1 + resolution: "eslint-plugin-jsx-a11y@npm:6.6.1" + dependencies: + "@babel/runtime": "npm:^7.18.9" + aria-query: "npm:^4.2.2" + array-includes: "npm:^3.1.5" + ast-types-flow: "npm:^0.0.7" + axe-core: "npm:^4.4.3" + axobject-query: "npm:^2.2.0" + damerau-levenshtein: "npm:^1.0.8" + emoji-regex: "npm:^9.2.2" + has: "npm:^1.0.3" + jsx-ast-utils: "npm:^3.3.2" + language-tags: "npm:^1.0.5" + minimatch: "npm:^3.1.2" + semver: "npm:^6.3.0" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/7095a78f538e92d046ff67ba27a6b8ba75e7baba273cda348ed2893018b4cce0628fe85e5bf529251f394cd61b21d7a172c697b296e3917cc170f80f6419e9b3 + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:^6.7.1": + version: 6.10.0 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.0" + dependencies: + aria-query: "npm:~5.1.3" + array-includes: "npm:^3.1.8" + array.prototype.flatmap: "npm:^1.3.2" + ast-types-flow: "npm:^0.0.8" + axe-core: "npm:^4.10.0" + axobject-query: "npm:^4.1.0" + damerau-levenshtein: "npm:^1.0.8" + emoji-regex: "npm:^9.2.2" + es-iterator-helpers: "npm:^1.0.19" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^3.3.5" + language-tags: "npm:^1.0.9" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.8" + safe-regex-test: "npm:^1.0.3" + string.prototype.includes: "npm:^2.0.0" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + checksum: 10c0/9f8e29a3317fb6a82e2ecd333fe0fab3a69fff786d087eb65dc723d6e954473ab681d14a252d7cb2971f5e7f68816cb6f7731766558e1833a77bd73af1b5ab34 + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:4.2.1": + version: 4.2.1 + resolution: "eslint-plugin-prettier@npm:4.2.1" + dependencies: + prettier-linter-helpers: "npm:^1.0.0" + peerDependencies: + eslint: ">=7.28.0" + prettier: ">=2.0.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + checksum: 10c0/c5e7316baeab9d96ac39c279f16686e837277e5c67a8006c6588bcff317edffdc1532fb580441eb598bc6770f6444006756b68a6575dff1cd85ebe227252d0b7 + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:4.6.2": + version: 4.6.2 + resolution: "eslint-plugin-react-hooks@npm:4.6.2" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 10c0/4844e58c929bc05157fb70ba1e462e34f1f4abcbc8dd5bbe5b04513d33e2699effb8bca668297976ceea8e7ebee4e8fc29b9af9d131bcef52886feaa2308b2cc + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": + version: 5.0.0-canary-7118f5dd7-20230705 + resolution: "eslint-plugin-react-hooks@npm:5.0.0-canary-7118f5dd7-20230705" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 10c0/554c4e426bfeb126155510dcba8345391426af147ee629f1c56c9ef6af08340d11008213e4e15b0138830af2c4439d7158da2091987f7efb01aeab662c44b274 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:7.31.11": + version: 7.31.11 + resolution: "eslint-plugin-react@npm:7.31.11" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flatmap: "npm:^1.3.1" + array.prototype.tosorted: "npm:^1.1.1" + doctrine: "npm:^2.1.0" + estraverse: "npm:^5.3.0" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.6" + object.fromentries: "npm:^2.0.6" + object.hasown: "npm:^1.1.2" + object.values: "npm:^1.1.6" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.3" + semver: "npm:^6.3.0" + string.prototype.matchall: "npm:^4.0.8" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/2f8d27adbfe1b551a170cc1340dd8bbecf6c9fdbfcde04dd1097bbf198e99f0c981af84bc3c69f851af5736cc4d6520687a03dfb3271717079f88983d79cb9cd + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.33.2": + version: 7.37.1 + resolution: "eslint-plugin-react@npm:7.37.1" + dependencies: + array-includes: "npm:^3.1.8" + array.prototype.findlast: "npm:^1.2.5" + array.prototype.flatmap: "npm:^1.3.2" + array.prototype.tosorted: "npm:^1.1.4" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.0.19" + estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.8" + object.fromentries: "npm:^2.0.8" + object.values: "npm:^1.2.0" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.5" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.11" + string.prototype.repeat: "npm:^1.0.0" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10c0/13cf55666f16d2ca45b14aad1b0e14741d1817679c86d20aff0bc1e802439a8541f40a42c4c8e3486ffb710f1bcc2f3e56697f2b5f724306a7fca174e1ad6433 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + languageName: node + linkType: hard + +"eslint-scope@npm:^7.0.0, eslint-scope@npm:^7.1.1": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-utils@npm:^3.0.0": + version: 3.0.0 + resolution: "eslint-utils@npm:3.0.0" + dependencies: + eslint-visitor-keys: "npm:^2.0.0" + peerDependencies: + eslint: ">=5" + checksum: 10c0/45aa2b63667a8d9b474c98c28af908d0a592bed1a4568f3145cd49fb5d9510f545327ec95561625290313fe126e6d7bdfe3fdbdb6f432689fab6b9497d3bfb52 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^2.0.0": + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: 10c0/9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint@npm:8.15.0": + version: 8.15.0 + resolution: "eslint@npm:8.15.0" + dependencies: + "@eslint/eslintrc": "npm:^1.2.3" + "@humanwhocodes/config-array": "npm:^0.9.2" + ajv: "npm:^6.10.0" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.1.1" + eslint-utils: "npm:^3.0.0" + eslint-visitor-keys: "npm:^3.3.0" + espree: "npm:^9.3.2" + esquery: "npm:^1.4.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + functional-red-black-tree: "npm:^1.0.1" + glob-parent: "npm:^6.0.1" + globals: "npm:^13.6.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.0.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.1" + regexpp: "npm:^3.2.0" + strip-ansi: "npm:^6.0.1" + strip-json-comments: "npm:^3.1.0" + text-table: "npm:^0.2.0" + v8-compile-cache: "npm:^2.0.3" + bin: + eslint: bin/eslint.js + checksum: 10c0/4e4ba06c9891053eabb4351a0b5c4506fa1418fa8a191e858ebfa667a6c56c748f5463c036a643670e1e6c67328aa13a8a2dbe706fc4560bed76f924d7153711 + languageName: node + linkType: hard + +"espree@npm:^9.3.2, espree@npm:^9.4.0": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.4.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"estree-walker@npm:^0.6.1": + version: 0.6.1 + resolution: "estree-walker@npm:0.6.1" + checksum: 10c0/6dabc855faa04a1ffb17b6a9121b6008ba75ab5a163ad9dc3d7fca05cfda374c5f5e91418d783496620ca75e99a73c40874d8b75f23b4117508cc8bde78e7b41 + languageName: node + linkType: hard + +"estree-walker@npm:^1.0.1": + version: 1.0.1 + resolution: "estree-walker@npm:1.0.1" + checksum: 10c0/fa9e5f8c1bbe8d01e314c0f03067b64a4f22d4c58410fc5237060d0c15b81e58c23921c41acc60abbdab490f1fdfcbd6408ede2d03ca704454272e0244d61a55 + languageName: node + linkType: hard + +"estree-walker@npm:^2.0.1": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 + languageName: node + linkType: hard + +"eth-block-tracker@npm:^7.1.0": + version: 7.1.0 + resolution: "eth-block-tracker@npm:7.1.0" + dependencies: + "@metamask/eth-json-rpc-provider": "npm:^1.0.0" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^5.0.1" + json-rpc-random-id: "npm:^1.0.1" + pify: "npm:^3.0.0" + checksum: 10c0/86a5cabef7fa8505c27b5fad1b2f0100c21fda11ad64a701f76eb4224f8c7edab706181fd0934e106a71f5465d57278448af401eb3e584b3529d943ddd4d7dfb + languageName: node + linkType: hard + +"eth-json-rpc-filters@npm:^6.0.0": + version: 6.0.1 + resolution: "eth-json-rpc-filters@npm:6.0.1" + dependencies: + "@metamask/safe-event-emitter": "npm:^3.0.0" + async-mutex: "npm:^0.2.6" + eth-query: "npm:^2.1.2" + json-rpc-engine: "npm:^6.1.0" + pify: "npm:^5.0.0" + checksum: 10c0/69699460fd7837e13e42c1c74fbbfc44c01139ffd694e50235c78773c06059988be5c83dbe3a14d175ecc2bf3e385c4bfd3d6ab5d2d4714788b0b461465a3f56 + languageName: node + linkType: hard + +"eth-query@npm:^2.1.2": + version: 2.1.2 + resolution: "eth-query@npm:2.1.2" + dependencies: + json-rpc-random-id: "npm:^1.0.0" + xtend: "npm:^4.0.1" + checksum: 10c0/ef28d14bfad14b8813c9ba8f9f0baf8778946a4797a222b8a039067222ac68aa3d9d53ed22a71c75b99240a693af1ed42508a99fd484cce2a7726822723346b7 + languageName: node + linkType: hard + +"eth-rpc-errors@npm:^4.0.2, eth-rpc-errors@npm:^4.0.3": + version: 4.0.3 + resolution: "eth-rpc-errors@npm:4.0.3" + dependencies: + fast-safe-stringify: "npm:^2.0.6" + checksum: 10c0/332cbc5a957b62bb66ea01da2a467da65026df47e6516a286a969cad74d6002f2b481335510c93f12ca29c46ebc8354e39e2240769d86184f9b4c30832cf5466 + languageName: node + linkType: hard + +"ethereum-cryptography@npm:^2.0.0": + version: 2.2.1 + resolution: "ethereum-cryptography@npm:2.2.1" + dependencies: + "@noble/curves": "npm:1.4.2" + "@noble/hashes": "npm:1.4.0" + "@scure/bip32": "npm:1.4.0" + "@scure/bip39": "npm:1.3.0" + checksum: 10c0/c6c7626d393980577b57f709878b2eb91f270fe56116044b1d7afb70d5c519cddc0c072e8c05e4a335e05342eb64d9c3ab39d52f78bb75f76ad70817da9645ef + languageName: node + linkType: hard + +"ethers@npm:5.7.2": + version: 5.7.2 + resolution: "ethers@npm:5.7.2" + dependencies: + "@ethersproject/abi": "npm:5.7.0" + "@ethersproject/abstract-provider": "npm:5.7.0" + "@ethersproject/abstract-signer": "npm:5.7.0" + "@ethersproject/address": "npm:5.7.0" + "@ethersproject/base64": "npm:5.7.0" + "@ethersproject/basex": "npm:5.7.0" + "@ethersproject/bignumber": "npm:5.7.0" + "@ethersproject/bytes": "npm:5.7.0" + "@ethersproject/constants": "npm:5.7.0" + "@ethersproject/contracts": "npm:5.7.0" + "@ethersproject/hash": "npm:5.7.0" + "@ethersproject/hdnode": "npm:5.7.0" + "@ethersproject/json-wallets": "npm:5.7.0" + "@ethersproject/keccak256": "npm:5.7.0" + "@ethersproject/logger": "npm:5.7.0" + "@ethersproject/networks": "npm:5.7.1" + "@ethersproject/pbkdf2": "npm:5.7.0" + "@ethersproject/properties": "npm:5.7.0" + "@ethersproject/providers": "npm:5.7.2" + "@ethersproject/random": "npm:5.7.0" + "@ethersproject/rlp": "npm:5.7.0" + "@ethersproject/sha2": "npm:5.7.0" + "@ethersproject/signing-key": "npm:5.7.0" + "@ethersproject/solidity": "npm:5.7.0" + "@ethersproject/strings": "npm:5.7.0" + "@ethersproject/transactions": "npm:5.7.0" + "@ethersproject/units": "npm:5.7.0" + "@ethersproject/wallet": "npm:5.7.0" + "@ethersproject/web": "npm:5.7.1" + "@ethersproject/wordlists": "npm:5.7.0" + checksum: 10c0/90629a4cdb88cde7a7694f5610a83eb00d7fbbaea687446b15631397988f591c554dd68dfa752ddf00aabefd6285e5b298be44187e960f5e4962684e10b39962 + languageName: node + linkType: hard + +"event-target-shim@npm:^5.0.0": + version: 5.0.1 + resolution: "event-target-shim@npm:5.0.1" + checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b + languageName: node + linkType: hard + +"eventemitter-asyncresource@npm:^1.0.0": + version: 1.0.0 + resolution: "eventemitter-asyncresource@npm:1.0.0" + checksum: 10c0/827f6f24dd8bccd762b009c8e15d472821c47c068ca8e7d2892d3164f1ad4ed9f4e06d291c6ffcb8aec51f62396b785fb7f3feea925197c1e2b559764aae6264 + languageName: node + linkType: hard + +"eventemitter2@npm:6.4.7": + version: 6.4.7 + resolution: "eventemitter2@npm:6.4.7" + checksum: 10c0/35d8e9d51b919114eb072d33786274e1475db50efe00960c24c088ce4f76c07a826ccc927602724928efb3d8f09a7d8dd1fa79e410875118c0e9846959287f34 + languageName: node + linkType: hard + +"eventemitter2@npm:^6.4.7": + version: 6.4.9 + resolution: "eventemitter2@npm:6.4.9" + checksum: 10c0/b2adf7d9f1544aa2d95ee271b0621acaf1e309d85ebcef1244fb0ebc7ab0afa6ffd5e371535d0981bc46195ad67fd6ff57a8d1db030584dee69aa5e371a27ea7 + languageName: node + linkType: hard + +"eventemitter3@npm:5.0.1, eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + languageName: node + linkType: hard + +"events@npm:3.3.0, events@npm:^3.2.0, events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 + languageName: node + linkType: hard + +"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": + version: 1.0.3 + resolution: "evp_bytestokey@npm:1.0.3" + dependencies: + md5.js: "npm:^1.3.4" + node-gyp: "npm:latest" + safe-buffer: "npm:^5.1.1" + checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 + languageName: node + linkType: hard + +"execa@npm:4.1.0": + version: 4.1.0 + resolution: "execa@npm:4.1.0" + dependencies: + cross-spawn: "npm:^7.0.0" + get-stream: "npm:^5.0.0" + human-signals: "npm:^1.1.1" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.0" + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/02211601bb1c52710260edcc68fb84c3c030dc68bafc697c90ada3c52cc31375337de8c24826015b8382a58d63569ffd203b79c94fef217d65503e3e8d2c52ba + languageName: node + linkType: hard + +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^8.0.1" + human-signals: "npm:^5.0.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^3.0.0" + checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af + languageName: node + linkType: hard + +"executable@npm:^4.1.1": + version: 4.1.1 + resolution: "executable@npm:4.1.1" + dependencies: + pify: "npm:^2.2.0" + checksum: 10c0/c3cc5d2d2e3cdb1b7d7b0639ebd5566d113d7ada21cfa07f5226d55ba2a210320116720e07570ed5659ef2ec516bc00c8f0488dac75d112fd324ef25c2100173 + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 10c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 + languageName: node + linkType: hard + +"expand-template@npm:^2.0.3": + version: 2.0.3 + resolution: "expand-template@npm:2.0.3" + checksum: 10c0/1c9e7afe9acadf9d373301d27f6a47b34e89b3391b1ef38b7471d381812537ef2457e620ae7f819d2642ce9c43b189b3583813ec395e2938319abe356a9b2f51 + languageName: node + linkType: hard + +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"express@npm:^4.17.3": + version: 4.21.0 + resolution: "express@npm:4.21.0" + dependencies: + accepts: "npm:~1.3.8" + array-flatten: "npm:1.1.1" + body-parser: "npm:1.20.3" + content-disposition: "npm:0.5.4" + content-type: "npm:~1.0.4" + cookie: "npm:0.6.0" + cookie-signature: "npm:1.0.6" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + finalhandler: "npm:1.3.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + merge-descriptors: "npm:1.0.3" + methods: "npm:~1.1.2" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:0.1.10" + proxy-addr: "npm:~2.0.7" + qs: "npm:6.13.0" + range-parser: "npm:~1.2.1" + safe-buffer: "npm:5.2.1" + send: "npm:0.19.0" + serve-static: "npm:1.16.2" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + type-is: "npm:~1.6.18" + utils-merge: "npm:1.0.1" + vary: "npm:~1.1.2" + checksum: 10c0/4cf7ca328f3fdeb720f30ccb2ea7708bfa7d345f9cc460b64a82bf1b2c91e5b5852ba15a9a11b2a165d6089acf83457fc477dc904d59cd71ed34c7a91762c6cc + languageName: node + linkType: hard + +"extend@npm:~3.0.2": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 + languageName: node + linkType: hard + +"extension-port-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "extension-port-stream@npm:3.0.0" + dependencies: + readable-stream: "npm:^3.6.2 || ^4.4.2" + webextension-polyfill: "npm:>=0.10.0 <1.0" + checksum: 10c0/5645ba63b8e77996b75a5aae5a37d169fef13b65d575fa72b0cf9199c7ecd46df7ef76fbf7d6384b375544e48eb2c8912b62200320ed2a5ef9526a00fcc148d9 + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: "npm:^0.7.0" + iconv-lite: "npm:^0.4.24" + tmp: "npm:^0.0.33" + checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 + languageName: node + linkType: hard + +"extract-zip@npm:2.0.1": + version: 2.0.1 + resolution: "extract-zip@npm:2.0.1" + dependencies: + "@types/yauzl": "npm:^2.9.1" + debug: "npm:^4.1.1" + get-stream: "npm:^5.1.0" + yauzl: "npm:^2.10.0" + dependenciesMeta: + "@types/yauzl": + optional: true + bin: + extract-zip: cli.js + checksum: 10c0/9afbd46854aa15a857ae0341a63a92743a7b89c8779102c3b4ffc207516b2019337353962309f85c66ee3d9092202a83cdc26dbf449a11981272038443974aee + languageName: node + linkType: hard + +"extsprintf@npm:1.3.0": + version: 1.3.0 + resolution: "extsprintf@npm:1.3.0" + checksum: 10c0/f75114a8388f0cbce68e277b6495dc3930db4dde1611072e4a140c24e204affd77320d004b947a132e9a3b97b8253017b2b62dce661975fb0adced707abf1ab5 + languageName: node + linkType: hard + +"extsprintf@npm:^1.2.0": + version: 1.4.1 + resolution: "extsprintf@npm:1.4.1" + checksum: 10c0/e10e2769985d0e9b6c7199b053a9957589d02e84de42832c295798cb422a025e6d4a92e0259c1fb4d07090f5bfde6b55fd9f880ac5855bd61d775f8ab75a7ab0 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-fifo@npm:^1.0.0": + version: 1.3.2 + resolution: "fast-fifo@npm:1.3.2" + checksum: 10c0/d53f6f786875e8b0529f784b59b4b05d4b5c31c651710496440006a398389a579c8dbcd2081311478b5bf77f4b0b21de69109c5a4eabea9d8e8783d1eb864e4c + languageName: node + linkType: hard + +"fast-glob@npm:3.2.12": + version: 3.2.12 + resolution: "fast-glob@npm:3.2.12" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 + languageName: node + linkType: hard + +"fast-glob@npm:3.2.7": + version: 3.2.7 + resolution: "fast-glob@npm:3.2.7" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/cc820a9acbd99c51267d525ed3c0c368b57d273f8d34e2401eef824390ff38ff419af3c0308d4ec1aef3dae0e24d1ac1dfe3156e5c702d63416a4c877ab7e0c4 + languageName: node + linkType: hard + +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fast-redact@npm:^3.0.0": + version: 3.5.0 + resolution: "fast-redact@npm:3.5.0" + checksum: 10c0/7e2ce4aad6e7535e0775bf12bd3e4f2e53d8051d8b630e0fa9e67f68cb0b0e6070d2f7a94b1d0522ef07e32f7c7cda5755e2b677a6538f1e9070ca053c42343a + languageName: node + linkType: hard + +"fast-safe-stringify@npm:^2.0.6": + version: 2.1.1 + resolution: "fast-safe-stringify@npm:2.1.1" + checksum: 10c0/d90ec1c963394919828872f21edaa3ad6f1dddd288d2bd4e977027afff09f5db40f94e39536d4646f7e01761d704d72d51dce5af1b93717f3489ef808f5f4e4d + languageName: node + linkType: hard + +"fast-uri@npm:^3.0.1": + version: 3.0.2 + resolution: "fast-uri@npm:3.0.2" + checksum: 10c0/8cdd3da7b4022a037d348d587d55caff74b7e4f862bbdd2cc35c1e6e3f97d0aedb567894d44c57ee8798d3192cceb97dcf41dbdabfa07dd2842a0474a6c6eeef + languageName: node + linkType: hard + +"fastest-levenshtein@npm:^1.0.12": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: 10c0/7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 + languageName: node + linkType: hard + +"faye-websocket@npm:^0.11.3": + version: 0.11.4 + resolution: "faye-websocket@npm:0.11.4" + dependencies: + websocket-driver: "npm:>=0.5.1" + checksum: 10c0/c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + +"fd-slicer@npm:~1.1.0": + version: 1.1.0 + resolution: "fd-slicer@npm:1.1.0" + dependencies: + pend: "npm:~1.2.0" + checksum: 10c0/304dd70270298e3ffe3bcc05e6f7ade2511acc278bc52d025f8918b48b6aa3b77f10361bddfadfe2a28163f7af7adbdce96f4d22c31b2f648ba2901f0c5fc20e + languageName: node + linkType: hard + +"figures@npm:3.2.0, figures@npm:^3.0.0, figures@npm:^3.2.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 + languageName: node + linkType: hard + +"figures@npm:^2.0.0": + version: 2.0.0 + resolution: "figures@npm:2.0.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/5dc5a75fec3e7e04ae65d6ce51d28b3e70d4656c51b06996b6fdb2cb5b542df512e3b3c04482f5193a964edddafa5521479ff948fa84e12ff556e53e094ab4ce + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"file-loader@npm:^6.2.0": + version: 6.2.0 + resolution: "file-loader@npm:6.2.0" + dependencies: + loader-utils: "npm:^2.0.0" + schema-utils: "npm:^3.0.0" + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 10c0/e176a57c2037ab0f78e5755dbf293a6b7f0f8392350a120bd03cc2ce2525bea017458ba28fea14ca535ff1848055e86d1a3a216bdb2561ef33395b27260a1dd3 + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + languageName: node + linkType: hard + +"filelist@npm:^1.0.4": + version: 1.0.4 + resolution: "filelist@npm:1.0.4" + dependencies: + minimatch: "npm:^5.0.1" + checksum: 10c0/426b1de3944a3d153b053f1c0ebfd02dccd0308a4f9e832ad220707a6d1f1b3c9784d6cadf6b2f68f09a57565f63ebc7bcdc913ccf8012d834f472c46e596f41 + languageName: node + linkType: hard + +"filename-reserved-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "filename-reserved-regex@npm:2.0.0" + checksum: 10c0/453740b7f9fd126e508da555b37e38c1f7ff19f5e9f3d297b2de1beb09854957baddd74c83235e87b16e9ce27a2368798896669edad5a81b5b7bd8cb57c942fc + languageName: node + linkType: hard + +"filenamify@npm:^4.3.0": + version: 4.3.0 + resolution: "filenamify@npm:4.3.0" + dependencies: + filename-reserved-regex: "npm:^2.0.0" + strip-outer: "npm:^1.0.1" + trim-repeated: "npm:^1.0.0" + checksum: 10c0/dcfd2f116d66f78c9dd58bb0f0d9b6529d89c801a9f37a4f86e7adc0acecb6881c7fb7c3231dc9e6754b767edcfdca89cba3a492a58afd2b48479b30d14ccf8f + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"filter-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "filter-obj@npm:1.1.0" + checksum: 10c0/071e0886b2b50238ca5026c5bbf58c26a7c1a1f720773b8c7813d16ba93d0200de977af14ac143c5ac18f666b2cfc83073f3a5fe6a4e996c49e0863d5500fccf + languageName: node + linkType: hard + +"finalhandler@npm:1.3.1": + version: 1.3.1 + resolution: "finalhandler@npm:1.3.1" + dependencies: + debug: "npm:2.6.9" + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + statuses: "npm:2.0.1" + unpipe: "npm:~1.0.0" + checksum: 10c0/d38035831865a49b5610206a3a9a9aae4e8523cbbcd01175d0480ffbf1278c47f11d89be3ca7f617ae6d94f29cf797546a4619cd84dd109009ef33f12f69019f + languageName: node + linkType: hard + +"find-cache-dir@npm:^3.3.1, find-cache-dir@npm:^3.3.2": + version: 3.3.2 + resolution: "find-cache-dir@npm:3.3.2" + dependencies: + commondir: "npm:^1.0.1" + make-dir: "npm:^3.0.2" + pkg-dir: "npm:^4.1.0" + checksum: 10c0/92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 + languageName: node + linkType: hard + +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" + dependencies: + common-path-prefix: "npm:^3.0.0" + pkg-dir: "npm:^7.0.0" + checksum: 10c0/0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff + languageName: node + linkType: hard + +"find-up@npm:^2.0.0": + version: 2.1.0 + resolution: "find-up@npm:2.1.0" + dependencies: + locate-path: "npm:^2.0.0" + checksum: 10c0/c080875c9fe28eb1962f35cbe83c683796a0321899f1eed31a37577800055539815de13d53495049697d3ba313013344f843bb9401dd337a1b832be5edfc6840 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: "npm:^7.1.0" + path-exists: "npm:^5.0.0" + checksum: 10c0/07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + languageName: node + linkType: hard + +"find-versions@npm:^4.0.0": + version: 4.0.0 + resolution: "find-versions@npm:4.0.0" + dependencies: + semver-regex: "npm:^3.1.2" + checksum: 10c0/4ed736f0604e9249104fb8679850ad8bfb9262142e79f86bc88e1e731e6958616a1dd6b0d6814634e993e7a59efaa1546a92e0d47a22534c6e79ec382ea60950 + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + languageName: node + linkType: hard + +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf + languageName: node + linkType: hard + +"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.0, follow-redirects@npm:^1.15.6": + version: 1.15.9 + resolution: "follow-redirects@npm:1.15.9" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/5829165bd112c3c0e82be6c15b1a58fa9dcfaede3b3c54697a82fe4a62dd5ae5e8222956b448d2f98e331525f05d00404aba7d696de9e761ef6e42fdc780244f + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: "npm:^1.1.3" + checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa + languageName: node + linkType: hard + +"foreach@npm:~2.0.1": + version: 2.0.6 + resolution: "foreach@npm:2.0.6" + checksum: 10c0/dc79f83997ac986dadbc95b4035ce8b86699fb654eb85446b0ad779fe69d567fc9894075e460243ca8bc20adb8fd178ad203aef66dc3c620ac78b18a4cb7059c + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/028f1d41000553fcfa6c4bb5c372963bf3d9bf0b1f25a87d1a6253014343fb69dfb1b42d9625d7cf44c8ba429940f3d0ff718b62105d4d4a4f6ef8ca0a53faa2 + languageName: node + linkType: hard + +"forever-agent@npm:~0.6.1": + version: 0.6.1 + resolution: "forever-agent@npm:0.6.1" + checksum: 10c0/364f7f5f7d93ab661455351ce116a67877b66f59aca199559a999bd39e3cfadbfbfacc10415a915255e2210b30c23febe9aec3ca16bf2d1ff11c935a1000e24c + languageName: node + linkType: hard + +"fork-ts-checker-webpack-plugin@npm:7.2.13": + version: 7.2.13 + resolution: "fork-ts-checker-webpack-plugin@npm:7.2.13" + dependencies: + "@babel/code-frame": "npm:^7.16.7" + chalk: "npm:^4.1.2" + chokidar: "npm:^3.5.3" + cosmiconfig: "npm:^7.0.1" + deepmerge: "npm:^4.2.2" + fs-extra: "npm:^10.0.0" + memfs: "npm:^3.4.1" + minimatch: "npm:^3.0.4" + node-abort-controller: "npm:^3.0.1" + schema-utils: "npm:^3.1.1" + semver: "npm:^7.3.5" + tapable: "npm:^2.2.1" + peerDependencies: + typescript: ">3.6.0" + vue-template-compiler: "*" + webpack: ^5.11.0 + peerDependenciesMeta: + vue-template-compiler: + optional: true + checksum: 10c0/e6ca712c818956e5ed0837cef5e0bbf9ce453c7a82e2efa56a01343d566b330580c6d3bbbfed33705df2987e71398a46c4af901dfcdffe09edfece3f195f6ebd + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + languageName: node + linkType: hard + +"form-data@npm:~2.3.2": + version: 2.3.3 + resolution: "form-data@npm:2.3.3" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.6" + mime-types: "npm:^2.1.12" + checksum: 10c0/706ef1e5649286b6a61e5bb87993a9842807fd8f149cd2548ee807ea4fb882247bdf7f6e64ac4720029c0cd5c80343de0e22eee1dc9e9882e12db9cc7bc016a4 + languageName: node + linkType: hard + +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 + languageName: node + linkType: hard + +"fraction.js@npm:^4.2.0, fraction.js@npm:^4.3.7": + version: 4.3.7 + resolution: "fraction.js@npm:4.3.7" + checksum: 10c0/df291391beea9ab4c263487ffd9d17fed162dbb736982dee1379b2a8cc94e4e24e46ed508c6d278aded9080ba51872f1bc5f3a5fd8d7c74e5f105b508ac28711 + languageName: node + linkType: hard + +"fresh@npm:0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a + languageName: node + linkType: hard + +"from2@npm:^2.3.0": + version: 2.3.0 + resolution: "from2@npm:2.3.0" + dependencies: + inherits: "npm:^2.0.1" + readable-stream: "npm:^2.0.0" + checksum: 10c0/f87f7a2e4513244d551454a7f8324ef1f7837864a8701c536417286ec19ff4915606b1dfa8909a21b7591ebd8440ffde3642f7c303690b9a4d7c832d62248aa1 + languageName: node + linkType: hard + +"fromentries@npm:^1.3.2": + version: 1.3.2 + resolution: "fromentries@npm:1.3.2" + checksum: 10c0/63938819a86e39f490b0caa1f6b38b8ad04f41ccd2a1c144eb48a21f76e4dbc074bc62e97abb053c7c1f541ecc70cf0b8aaa98eed3fe02206db9b6f9bb9a6a47 + languageName: node + linkType: hard + +"fs-constants@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-constants@npm:1.0.0" + checksum: 10c0/a0cde99085f0872f4d244e83e03a46aa387b74f5a5af750896c6b05e9077fac00e9932fdf5aef84f2f16634cd473c63037d7a512576da7d5c2b9163d1909f3a8 + languageName: node + linkType: hard + +"fs-extra@npm:^10.0.0": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e + languageName: node + linkType: hard + +"fs-extra@npm:^11.0.0, fs-extra@npm:^11.1.0, fs-extra@npm:^11.1.1": + version: 11.2.0 + resolution: "fs-extra@npm:11.2.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/d77a9a9efe60532d2e790e938c81a02c1b24904ef7a3efb3990b835514465ba720e99a6ea56fd5e2db53b4695319b644d76d5a0e9988a2beef80aa7b1da63398 + languageName: node + linkType: hard + +"fs-extra@npm:^8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10c0/259f7b814d9e50d686899550c4f9ded85c46c643f7fe19be69504888e007fcbc08f306fae8ec495b8b998635e997c9e3e175ff2eeed230524ef1c1684cc96423 + languageName: node + linkType: hard + +"fs-extra@npm:^9.1.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: "npm:^1.0.0" + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs-monkey@npm:^1.0.4": + version: 1.0.6 + resolution: "fs-monkey@npm:1.0.6" + checksum: 10c0/6f2508e792a47e37b7eabd5afc79459c1ea72bce2a46007d2b7ed0bfc3a4d64af38975c6eb7e93edb69ac98bbb907c13ff1b1579b2cf52d3d02dbc0303fca79f + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + languageName: node + linkType: hard + +"functional-red-black-tree@npm:^1.0.1": + version: 1.0.1 + resolution: "functional-red-black-tree@npm:1.0.1" + checksum: 10c0/5959eed0375803d9924f47688479bb017e0c6816a0e5ac151e22ba6bfe1d12c41de2f339188885e0aa8eeea2072dad509d8e4448467e816bde0a2ca86a0670d3 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"futoin-hkdf@npm:^1.5.3": + version: 1.5.3 + resolution: "futoin-hkdf@npm:1.5.3" + checksum: 10c0/fe87b50d2ac125ca2074e92588ca1df5016e9657267363cb77d8287080639dc31f90e7740f4737aa054c3e687b2ab3456f9b5c55950b94cd2c2010bc441aa5ae + languageName: node + linkType: hard + +"fwd-stream@npm:^1.0.4": + version: 1.0.4 + resolution: "fwd-stream@npm:1.0.4" + dependencies: + readable-stream: "npm:~1.0.26-4" + checksum: 10c0/0586cf7a1112808b6747f27290c41526d43f69470a101f1c89bbecbac83c762af265cd03bd93b9fb53e27e3926fc752f2608eb3eea7c1a3124f419a14d250cb5 + languageName: node + linkType: hard + +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: "npm:^1.0.3 || ^2.0.0" + color-support: "npm:^1.1.3" + console-control-strings: "npm:^1.1.0" + has-unicode: "npm:^2.0.1" + signal-exit: "npm:^3.0.7" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wide-align: "npm:^1.1.5" + checksum: 10c0/ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c + languageName: node + linkType: hard + +"generate-function@npm:^2.0.0": + version: 2.3.1 + resolution: "generate-function@npm:2.3.1" + dependencies: + is-property: "npm:^1.0.2" + checksum: 10c0/4645cf1da90375e46a6f1dc51abc9933e5eafa4cd1a44c2f7e3909a30a4e9a1a08c14cd7d5b32da039da2dba2a085e1ed4597b580c196c3245b2d35d8bc0de5d + languageName: node + linkType: hard + +"generate-object-property@npm:^1.1.0": + version: 1.2.0 + resolution: "generate-object-property@npm:1.2.0" + dependencies: + is-property: "npm:^1.0.0" + checksum: 10c0/0b30acb43283a489b1adf4655f3f413b448dbec750678cf70bfde92b04a22f85b286be004b66fd713e3060e418d7beb562f05431235ec95c044b63e324759e8c + languageName: node + linkType: hard + +"generic-names@npm:^4.0.0": + version: 4.0.0 + resolution: "generic-names@npm:4.0.0" + dependencies: + loader-utils: "npm:^3.2.0" + checksum: 10c0/4e2be864535fadceed4e803fefc1df7f85447d9479d51e611a8a43a2c96533422b62c8fae84d9eb10cc21ee3de569a8c29d5ba68978ae930cccc9cb43b9a36d1 + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 + languageName: node + linkType: hard + +"get-iterator@npm:^1.0.2": + version: 1.0.2 + resolution: "get-iterator@npm:1.0.2" + checksum: 10c0/d4096a21ca860678326ab059dabf1bf2d5cfe5dda59ce987d0c6b43c41706b92797bac4c6b75bf5e58341be70763a6961af826e79f5c606115d68ad982eaff79 + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + languageName: node + linkType: hard + +"get-port-please@npm:^3.1.2": + version: 3.1.2 + resolution: "get-port-please@npm:3.1.2" + checksum: 10c0/61237342fe035967e5ad1b67a2dee347a64de093bf1222b7cd50072568d73c48dad5cc5cd4fa44635b7cfdcd14d6c47554edb9891c2ec70ab33ecb831683e257 + languageName: node + linkType: hard + +"get-port@npm:^4.2.0": + version: 4.2.0 + resolution: "get-port@npm:4.2.0" + checksum: 10c0/ecce4233b720e7c6612aedc334ee8bb62b7d44db7ad6a55e58f7b3a17993ecfcb1bb218b8bb1ee197d0971c12e420aad2b3f95a93e4a117f2186f926ebcd2d42 + languageName: node + linkType: hard + +"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10c0/43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80 + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc + languageName: node + linkType: hard + +"get-tsconfig@npm:^4.7.5": + version: 4.8.1 + resolution: "get-tsconfig@npm:4.8.1" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 10c0/536ee85d202f604f4b5fb6be81bcd6e6d9a96846811e83e9acc6de4a04fb49506edea0e1b8cf1d5ee7af33e469916ec2809d4c5445ab8ae015a7a51fbd1572f9 + languageName: node + linkType: hard + +"getos@npm:^3.2.1": + version: 3.2.1 + resolution: "getos@npm:3.2.1" + dependencies: + async: "npm:^3.2.0" + checksum: 10c0/21556fca1da4dfc8f1707261b4f9ff19b9e9bfefa76478249d2abddba3cd014bd6c5360634add1590b27e0b27d422e8f997dddaa0234aae1fa4c54f33f82e841 + languageName: node + linkType: hard + +"getpass@npm:^0.1.1": + version: 0.1.7 + resolution: "getpass@npm:0.1.7" + dependencies: + assert-plus: "npm:^1.0.0" + checksum: 10c0/c13f8530ecf16fc509f3fa5cd8dd2129ffa5d0c7ccdf5728b6022d52954c2d24be3706b4cdf15333eec52f1fbb43feb70a01dabc639d1d10071e371da8aaa52f + languageName: node + linkType: hard + +"gh-pages@npm:6.1.1": + version: 6.1.1 + resolution: "gh-pages@npm:6.1.1" + dependencies: + async: "npm:^3.2.4" + commander: "npm:^11.0.0" + email-addresses: "npm:^5.0.0" + filenamify: "npm:^4.3.0" + find-cache-dir: "npm:^3.3.1" + fs-extra: "npm:^11.1.1" + globby: "npm:^6.1.0" + bin: + gh-pages: bin/gh-pages.js + gh-pages-clean: bin/gh-pages-clean.js + checksum: 10c0/1a0c1843862e3d85cdf7a165e92ab504e14b20d1c59398355cb73602041d8a3d509f9c5d80788628048610b751cb32731ed38079691c2b5f9d720664be3f1fa6 + languageName: node + linkType: hard + +"git-log-parser@npm:^1.2.0": + version: 1.2.1 + resolution: "git-log-parser@npm:1.2.1" + dependencies: + argv-formatter: "npm:~1.0.0" + spawn-error-forwarder: "npm:~1.0.0" + split2: "npm:~1.0.0" + stream-combiner2: "npm:~1.1.1" + through2: "npm:~2.0.0" + traverse: "npm:0.6.8" + checksum: 10c0/8b35e5a4882a481164b1999a062141063645246152eedab4587f4efaf0c61a4964da6cb1891263e92bc1b91edf0850843a06b6cf88a389a7c6a66c1be67ead4f + languageName: node + linkType: hard + +"git-raw-commits@npm:^4.0.0": + version: 4.0.0 + resolution: "git-raw-commits@npm:4.0.0" + dependencies: + dargs: "npm:^8.0.0" + meow: "npm:^12.0.1" + split2: "npm:^4.0.0" + bin: + git-raw-commits: cli.mjs + checksum: 10c0/ab51335d9e55692fce8e42788013dba7a7e7bf9f5bf0622c8cd7ddc9206489e66bb939563fca4edb3aa87477e2118f052702aad1933b13c6fa738af7f29884f0 + languageName: node + linkType: hard + +"git-semver-tags@npm:^7.0.0, git-semver-tags@npm:^7.0.1": + version: 7.0.1 + resolution: "git-semver-tags@npm:7.0.1" + dependencies: + meow: "npm:^12.0.1" + semver: "npm:^7.5.2" + bin: + git-semver-tags: cli.mjs + checksum: 10c0/6eec918f6324248faad98d8846cc8c73a73d735a182af3b2073e58a75c828487da0bbb6ae33d5b0302f006eed1af93b4a3ed732fcfc53152623ba5ee21504205 + languageName: node + linkType: hard + +"github-from-package@npm:0.0.0": + version: 0.0.0 + resolution: "github-from-package@npm:0.0.0" + checksum: 10c0/737ee3f52d0a27e26332cde85b533c21fcdc0b09fb716c3f8e522cfaa9c600d4a631dec9fcde179ec9d47cca89017b7848ed4d6ae6b6b78f936c06825b1fcc12 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.1": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 + languageName: node + linkType: hard + +"glob@npm:10.3.10": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^2.3.5" + minimatch: "npm:^9.0.1" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry: "npm:^1.10.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d + languageName: node + linkType: hard + +"glob@npm:7.1.4": + version: 7.1.4 + resolution: "glob@npm:7.1.4" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/7f6fcbf600eb2298cce34c65f6d8bbe6933ddd4f88aa5b38a9c6feec82b615bb33b63b120725303e89c4b50284413c21d2ff883414717a5c7d0c9f7cd7a0e5fe + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + languageName: node + linkType: hard + +"glob@npm:^11.0.0": + version: 11.0.0 + resolution: "glob@npm:11.0.0" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^4.0.1" + minimatch: "npm:^10.0.0" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^2.0.0" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/419866015d8795258a8ac51de5b9d1a99c72634fc3ead93338e4da388e89773ab21681e494eac0fbc4250b003451ca3110bb4f1c9393d15d14466270094fdb4e + languageName: node + linkType: hard + +"glob@npm:^7.0.3, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"glob@npm:^8.0.1": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + languageName: node + linkType: hard + +"glob@npm:^9.2.0": + version: 9.3.5 + resolution: "glob@npm:9.3.5" + dependencies: + fs.realpath: "npm:^1.0.0" + minimatch: "npm:^8.0.2" + minipass: "npm:^4.2.4" + path-scurry: "npm:^1.6.1" + checksum: 10c0/2f6c2b9ee019ee21dc258ae97a88719614591e4c979cb4580b1b9df6f0f778a3cb38b4bdaf18dfa584637ea10f89a3c5f2533a5e449cf8741514ad18b0951f2e + languageName: node + linkType: hard + +"global-dirs@npm:^3.0.0": + version: 3.0.1 + resolution: "global-dirs@npm:3.0.1" + dependencies: + ini: "npm:2.0.0" + checksum: 10c0/ef65e2241a47ff978f7006a641302bc7f4c03dfb98783d42bf7224c136e3a06df046e70ee3a010cf30214114755e46c9eb5eb1513838812fbbe0d92b14c25080 + languageName: node + linkType: hard + +"globals@npm:^11.1.0, globals@npm:^11.12.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"globals@npm:^13.19.0, globals@npm:^13.2.0, globals@npm:^13.6.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 + languageName: node + linkType: hard + +"globby@npm:10.0.1": + version: 10.0.1 + resolution: "globby@npm:10.0.1" + dependencies: + "@types/glob": "npm:^7.1.1" + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.0.3" + glob: "npm:^7.1.3" + ignore: "npm:^5.1.1" + merge2: "npm:^1.2.3" + slash: "npm:^3.0.0" + checksum: 10c0/048f8e19a5ff1b3d565372e66ac22050fcc9225ccf931ce7b0971bf264fd31ea19cdd8b8ba71e4af68d8264789c1534c23939bd56b3a5b0092c52d315ecc5f1b + languageName: node + linkType: hard + +"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"globby@npm:^12.0.2": + version: 12.2.0 + resolution: "globby@npm:12.2.0" + dependencies: + array-union: "npm:^3.0.1" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.7" + ignore: "npm:^5.1.9" + merge2: "npm:^1.4.1" + slash: "npm:^4.0.0" + checksum: 10c0/121fee62bb9a43a35a32731cda9540241003ef578f9cee5ad87b27d3020b94857ff62f8d82cb99dbeedf6f26981c9fa62509d873392642ceb37674f3d6ec4e52 + languageName: node + linkType: hard + +"globby@npm:^13.1.1": + version: 13.2.2 + resolution: "globby@npm:13.2.2" + dependencies: + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.3.0" + ignore: "npm:^5.2.4" + merge2: "npm:^1.4.1" + slash: "npm:^4.0.0" + checksum: 10c0/a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 + languageName: node + linkType: hard + +"globby@npm:^6.1.0": + version: 6.1.0 + resolution: "globby@npm:6.1.0" + dependencies: + array-union: "npm:^1.0.1" + glob: "npm:^7.0.3" + object-assign: "npm:^4.0.1" + pify: "npm:^2.0.0" + pinkie-promise: "npm:^2.0.0" + checksum: 10c0/656ad1f0d02c6ef378c07589519ed3ec27fe988ea177195c05b8aff280320f3d67b91fa0baa6f7e49288f9bf1f92fc84f783a79ac3ed66278f3fa082e627ed84 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.1.3" + checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 + languageName: node + linkType: hard + +"graceful-fs@npm:4.2.10": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 10c0/4223a833e38e1d0d2aea630c2433cfb94ddc07dfc11d511dbd6be1d16688c5be848acc31f9a5d0d0ddbfb56d2ee5a6ae0278aceeb0ca6a13f27e06b9956fb952 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"grapheme-splitter@npm:^1.0.4": + version: 1.0.4 + resolution: "grapheme-splitter@npm:1.0.4" + checksum: 10c0/108415fb07ac913f17040dc336607772fcea68c7f495ef91887edddb0b0f5ff7bc1d1ab181b125ecb2f0505669ef12c9a178a3bbd2dd8e042d8c5f1d7c90331a + languageName: node + linkType: hard + +"h3@npm:^1.12.0": + version: 1.13.0 + resolution: "h3@npm:1.13.0" + dependencies: + cookie-es: "npm:^1.2.2" + crossws: "npm:>=0.2.0 <0.4.0" + defu: "npm:^6.1.4" + destr: "npm:^2.0.3" + iron-webcrypto: "npm:^1.2.1" + ohash: "npm:^1.1.4" + radix3: "npm:^1.1.2" + ufo: "npm:^1.5.4" + uncrypto: "npm:^0.1.3" + unenv: "npm:^1.10.0" + checksum: 10c0/d2e91d44c7133c31c62e39288961be28fb9f2c75f91d83a4a0416e29ff408b3207b79e46ba25a2652e13aea78a3e6f10d12c53d746feb00e91b864e1f4b21302 + languageName: node + linkType: hard + +"handle-thing@npm:^2.0.0": + version: 2.0.1 + resolution: "handle-thing@npm:2.0.1" + checksum: 10c0/7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 + languageName: node + linkType: hard + +"handlebars@npm:^4.7.7": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: "npm:^1.2.5" + neo-async: "npm:^2.6.2" + source-map: "npm:^0.6.1" + uglify-js: "npm:^3.1.4" + wordwrap: "npm:^1.0.0" + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 10c0/7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d + languageName: node + linkType: hard + +"hard-rejection@npm:^2.1.0": + version: 2.1.0 + resolution: "hard-rejection@npm:2.1.0" + checksum: 10c0/febc3343a1ad575aedcc112580835b44a89a89e01f400b4eda6e8110869edfdab0b00cd1bd4c3bfec9475a57e79e0b355aecd5be46454b6a62b9a359af60e564 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 10c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c + languageName: node + linkType: hard + +"has@npm:^1.0.3": + version: 1.0.4 + resolution: "has@npm:1.0.4" + checksum: 10c0/82c1220573dc1f0a014a5d6189ae52a1f820f99dfdc00323c3a725b5002dcb7f04e44f460fea7af068474b2dd7c88cbe1846925c84017be9e31e1708936d305b + languageName: node + linkType: hard + +"hash-base@npm:^3.0.0": + version: 3.1.0 + resolution: "hash-base@npm:3.1.0" + dependencies: + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.6.0" + safe-buffer: "npm:^5.2.0" + checksum: 10c0/663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 + languageName: node + linkType: hard + +"hash-base@npm:~3.0": + version: 3.0.4 + resolution: "hash-base@npm:3.0.4" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/a13357dccb3827f0bb0b56bf928da85c428dc8670f6e4a1c7265e4f1653ce02d69030b40fd01b0f1d218a995a066eea279cded9cec72d207b593bcdfe309c2f0 + languageName: node + linkType: hard + +"hash.js@npm:1.1.7, hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: "npm:^2.0.3" + minimalistic-assert: "npm:^1.0.1" + checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 + languageName: node + linkType: hard + +"hashlru@npm:^2.3.0": + version: 2.3.0 + resolution: "hashlru@npm:2.3.0" + checksum: 10c0/90f351db1a320c43aeb681c7e806f35af6877a86d3fa9b970636ea21f111d0f0b819e046dc9b5fe6a8ab211a3d98178eb37aacbad29ea4f6f53554a4541a6f0d + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"hdr-histogram-js@npm:^2.0.1": + version: 2.0.3 + resolution: "hdr-histogram-js@npm:2.0.3" + dependencies: + "@assemblyscript/loader": "npm:^0.10.1" + base64-js: "npm:^1.2.0" + pako: "npm:^1.0.3" + checksum: 10c0/98c41264a086e57a56ec021283c211bec6aa456b4ade088ed9b7553f1632b1d33113b8399206f241c154bba47da86fa46786a04bde6637d0f4261530db279e5e + languageName: node + linkType: hard + +"hdr-histogram-percentiles-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "hdr-histogram-percentiles-obj@npm:3.0.0" + checksum: 10c0/7b1c90b01bdee22da3b6e1f95fdbe186ceb6875a53340c3615f6e9899ee5d4bc6624a0fe67a15b0e59ccddca8d3b835911214285a77fa22a04cf64c9e3d64d39 + languageName: node + linkType: hard + +"header-case@npm:^2.0.4": + version: 2.0.4 + resolution: "header-case@npm:2.0.4" + dependencies: + capital-case: "npm:^1.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/c9f295d9d8e38fa50679281fd70d80726962256e888a76c8e72e526453da7a1832dcb427caa716c1ad5d79841d4537301b90156fa30298fefd3d68f4ea2181bb + languageName: node + linkType: hard + +"hey-listen@npm:^1.0.8": + version: 1.0.8 + resolution: "hey-listen@npm:1.0.8" + checksum: 10c0/38db3028b4756f3d536c0f6a92da53bad577ab649b06dddfd0a4d953f9a46bbc6a7f693c8c5b466a538d6d23dbc469260c848427f0de14198a2bbecbac37b39e + languageName: node + linkType: hard + +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: "npm:^1.0.3" + minimalistic-assert: "npm:^1.0.0" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d + languageName: node + linkType: hard + +"hook-std@npm:^2.0.0": + version: 2.0.0 + resolution: "hook-std@npm:2.0.0" + checksum: 10c0/f34859f826bc3a8556e3e91b4cb2285aa33f7472fed2de7a461f8e0450792d6273afc3d497c1b318ea6529e13abad1e7ed1933ce3c07c17c896f74a65abccc44 + languageName: node + linkType: hard + +"hosted-git-info@npm:^2.1.4": + version: 2.8.9 + resolution: "hosted-git-info@npm:2.8.9" + checksum: 10c0/317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70 + languageName: node + linkType: hard + +"hosted-git-info@npm:^4.0.0, hosted-git-info@npm:^4.0.1": + version: 4.1.0 + resolution: "hosted-git-info@npm:4.1.0" + dependencies: + lru-cache: "npm:^6.0.0" + checksum: 10c0/150fbcb001600336d17fdbae803264abed013548eea7946c2264c49ebe2ebd8c4441ba71dd23dd8e18c65de79d637f98b22d4760ba5fb2e0b15d62543d0fff07 + languageName: node + linkType: hard + +"hosted-git-info@npm:^5.0.0, hosted-git-info@npm:^5.2.1": + version: 5.2.1 + resolution: "hosted-git-info@npm:5.2.1" + dependencies: + lru-cache: "npm:^7.5.1" + checksum: 10c0/c6682c2e91d774d79893e2c862d7173450455747fd57f0659337c78d37ddb56c23cb7541b296cbef4a3b47c3be307d8d57f24a6e9aa149cad243c7f126cd42ff + languageName: node + linkType: hard + +"hosted-git-info@npm:^6.0.0": + version: 6.1.1 + resolution: "hosted-git-info@npm:6.1.1" + dependencies: + lru-cache: "npm:^7.5.1" + checksum: 10c0/ba7158f81ae29c1b5a1e452fa517082f928051da8797a00788a84ff82b434996d34f78a875bbb688aec162bda1d4cf71d2312f44da3c896058803f5efa6ce77f + languageName: node + linkType: hard + +"hosted-git-info@npm:^7.0.0": + version: 7.0.2 + resolution: "hosted-git-info@npm:7.0.2" + dependencies: + lru-cache: "npm:^10.0.1" + checksum: 10c0/b19dbd92d3c0b4b0f1513cf79b0fc189f54d6af2129eeb201de2e9baaa711f1936929c848b866d9c8667a0f956f34bf4f07418c12be1ee9ca74fd9246335ca1f + languageName: node + linkType: hard + +"hpack.js@npm:^2.1.6": + version: 2.1.6 + resolution: "hpack.js@npm:2.1.6" + dependencies: + inherits: "npm:^2.0.1" + obuf: "npm:^1.0.0" + readable-stream: "npm:^2.0.1" + wbuf: "npm:^1.1.0" + checksum: 10c0/55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: "npm:^2.0.0" + checksum: 10c0/b17b3b0fb5d061d8eb15121c3b0b536376c3e295ecaf09ba48dd69c6b6c957839db124fe1e2b3f11329753a4ee01aa7dedf63b7677999e86da17fbbdd82c5386 + languageName: node + linkType: hard + +"html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": + version: 2.5.2 + resolution: "html-entities@npm:2.5.2" + checksum: 10c0/f20ffb4326606245c439c231de40a7c560607f639bf40ffbfb36b4c70729fd95d7964209045f1a4e62fe17f2364cef3d6e49b02ea09016f207fde51c2211e481 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + +"htmlnano@npm:^2.0.0": + version: 2.1.1 + resolution: "htmlnano@npm:2.1.1" + dependencies: + cosmiconfig: "npm:^9.0.0" + posthtml: "npm:^0.16.5" + timsort: "npm:^0.3.0" + peerDependencies: + cssnano: ^7.0.0 + postcss: ^8.3.11 + purgecss: ^6.0.0 + relateurl: ^0.2.7 + srcset: 5.0.1 + svgo: ^3.0.2 + terser: ^5.10.0 + uncss: ^0.17.3 + peerDependenciesMeta: + cssnano: + optional: true + postcss: + optional: true + purgecss: + optional: true + relateurl: + optional: true + srcset: + optional: true + svgo: + optional: true + terser: + optional: true + uncss: + optional: true + checksum: 10c0/3610259a3ccfb84be45525b1a02bce8bc392a2d0dcea0b069ff673e7330dad1f2bc4c3eb48abc69b344fe327345fb9be0650d9da13c25a1a654a879288f76f38 + languageName: node + linkType: hard + +"htmlparser2@npm:^7.1.1": + version: 7.2.0 + resolution: "htmlparser2@npm:7.2.0" + dependencies: + domelementtype: "npm:^2.0.1" + domhandler: "npm:^4.2.2" + domutils: "npm:^2.8.0" + entities: "npm:^3.0.1" + checksum: 10c0/7e1fa7f3b2635f2a1c5272765e25aab33b241d84a43e9d27f28a0b7166b51a8025dec40a6a29af38d6a698a2f1d2983cb43e5c61d4e07ec5aa9df672a7460e16 + languageName: node + linkType: hard + +"htmlparser2@npm:^8.0.2": + version: 8.0.2 + resolution: "htmlparser2@npm:8.0.2" + dependencies: + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + domutils: "npm:^3.0.1" + entities: "npm:^4.4.0" + checksum: 10c0/609cca85886d0bf2c9a5db8c6926a89f3764596877492e2caa7a25a789af4065bc6ee2cdc81807fe6b1d03a87bf8a373b5a754528a4cc05146b713c20575aab4 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-deceiver@npm:^1.2.7": + version: 1.2.7 + resolution: "http-deceiver@npm:1.2.7" + checksum: 10c0/8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 + languageName: node + linkType: hard + +"http-errors@npm:1.7.2": + version: 1.7.2 + resolution: "http-errors@npm:1.7.2" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.3" + setprototypeof: "npm:1.1.1" + statuses: "npm:>= 1.5.0 < 2" + toidentifier: "npm:1.0.0" + checksum: 10c0/49d3b2d52ee4bb24110fb4cff13a52e960501f63803d99bf50b6f93825335eab85bfd4809a90b5a5432ed13efe06c3979553a7a967cd196db1b0e23056068365 + languageName: node + linkType: hard + +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: "npm:2.0.0" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + toidentifier: "npm:1.0.1" + checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 + languageName: node + linkType: hard + +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.3" + setprototypeof: "npm:1.1.0" + statuses: "npm:>= 1.4.0 < 2" + checksum: 10c0/17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 + languageName: node + linkType: hard + +"http-parser-js@npm:>=0.5.1": + version: 0.5.8 + resolution: "http-parser-js@npm:0.5.8" + checksum: 10c0/4ed89f812c44f84c4ae5d43dd3a0c47942b875b63be0ed2ccecbe6b0018af867d806495fc6e12474aff868721163699c49246585bddea4f0ecc6d2b02e19faf1 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^4.0.1": + version: 4.0.1 + resolution: "http-proxy-agent@npm:4.0.1" + dependencies: + "@tootallnate/once": "npm:1" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/4fa4774d65b5331814b74ac05cefea56854fc0d5989c80b13432c1b0d42a14c9f4342ca3ad9f0359a52e78da12b1744c9f8a28e50042136ea9171675d972a5fd + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"http-proxy-middleware@npm:^2.0.3": + version: 2.0.7 + resolution: "http-proxy-middleware@npm:2.0.7" + dependencies: + "@types/http-proxy": "npm:^1.17.8" + http-proxy: "npm:^1.18.1" + is-glob: "npm:^4.0.1" + is-plain-obj: "npm:^3.0.0" + micromatch: "npm:^4.0.2" + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 10c0/8d00a61eb215b83826460b07489d8bb095368ec16e02a9d63e228dcf7524e7c20d61561e5476de1391aecd4ec32ea093279cdc972115b311f8e0a95a24c9e47e + languageName: node + linkType: hard + +"http-proxy@npm:^1.18.1": + version: 1.18.1 + resolution: "http-proxy@npm:1.18.1" + dependencies: + eventemitter3: "npm:^4.0.0" + follow-redirects: "npm:^1.0.0" + requires-port: "npm:^1.0.0" + checksum: 10c0/148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 + languageName: node + linkType: hard + +"http-shutdown@npm:^1.2.2": + version: 1.2.2 + resolution: "http-shutdown@npm:1.2.2" + checksum: 10c0/1ea04d50d9a84ad6e7d9ee621160ce9515936e32e7f5ba445db48a5d72681858002c934c7f3ae5f474b301c1cd6b418aee3f6a2f109822109e606cc1a6c17c03 + languageName: node + linkType: hard + +"http-signature@npm:~1.3.6": + version: 1.3.6 + resolution: "http-signature@npm:1.3.6" + dependencies: + assert-plus: "npm:^1.0.0" + jsprim: "npm:^2.0.2" + sshpk: "npm:^1.14.1" + checksum: 10c0/f8d15d8c91a5a80805530e2f401a3f83ed55162058651d86ad00df294b159a54e001b5d00e04983f7542a55865aee02d2d83d68c8499137ff2bc142553d8dfc2 + languageName: node + linkType: hard + +"https-browserify@npm:1.0.0": + version: 1.0.0 + resolution: "https-browserify@npm:1.0.0" + checksum: 10c0/e17b6943bc24ea9b9a7da5714645d808670af75a425f29baffc3284962626efdc1eb3aa9bbffaa6e64028a6ad98af5b09fabcb454a8f918fb686abfdc9e9b8ae + languageName: node + linkType: hard + +"https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c + languageName: node + linkType: hard + +"human-signals@npm:^1.1.1": + version: 1.1.1 + resolution: "human-signals@npm:1.1.1" + checksum: 10c0/18810ed239a7a5e23fb6c32d0fd4be75d7cd337a07ad59b8dbf0794cb0761e6e628349ee04c409e605fe55344716eab5d0a47a62ba2a2d0d367c89a2b4247b1e + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: "npm:^2.0.0" + checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a + languageName: node + linkType: hard + +"i18next-browser-languagedetector@npm:7.1.0": + version: 7.1.0 + resolution: "i18next-browser-languagedetector@npm:7.1.0" + dependencies: + "@babel/runtime": "npm:^7.19.4" + checksum: 10c0/d7cd0ea0ad6047e786de665d67b41cbb0940a2983eb2c53dd85a5d71f88e170550bba8de45728470a2b5f88060bed2c79f330aff9806dd50ef58ade0ec7b8ca3 + languageName: node + linkType: hard + +"i18next@npm:23.11.5": + version: 23.11.5 + resolution: "i18next@npm:23.11.5" + dependencies: + "@babel/runtime": "npm:^7.23.2" + checksum: 10c0/b0bec64250a3e529d4c51e2fc511406a85c5dde3d005d3aabe919551ca31dfc0a8f5490bf6e44649822e895a1fa91a58092d112367669cd11b2eb89e6ba90d1a + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + languageName: node + linkType: hard + +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"icss-replace-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "icss-replace-symbols@npm:1.1.0" + checksum: 10c0/aaa5b67f82781fccc77bf6df14eaa9177ce3944462ef82b2b9e3b9f17d8fcd90f8851ffd5e6e249ebc5c464bfda07c2eccce2d122274c51c9d5b359b087f7049 + languageName: node + linkType: hard + +"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "icss-utils@npm:5.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d + languageName: node + linkType: hard + +"idb-keyval@npm:^6.2.1": + version: 6.2.1 + resolution: "idb-keyval@npm:6.2.1" + checksum: 10c0/9f0c83703a365e00bd0b4ed6380ce509a06dedfc6ec39b2ba5740085069fd2f2ff5c14ba19356488e3612a2f9c49985971982d836460a982a5d0b4019eeba48a + languageName: node + linkType: hard + +"idb-wrapper@npm:^1.5.0": + version: 1.7.2 + resolution: "idb-wrapper@npm:1.7.2" + checksum: 10c0/10abfed5dbaba0c8efb311d930646dd52d30bb7d98c8792db0d815aaccecaea366f842076668be928eb6472e56cdf95dc3967ecabf5f8762a55d08e0c1726cb5 + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"ignore-walk@npm:^5.0.1": + version: 5.0.1 + resolution: "ignore-walk@npm:5.0.1" + dependencies: + minimatch: "npm:^5.0.1" + checksum: 10c0/0d157a54d6d11af0c3059fdc7679eef3b074e9a663d110a76c72788e2fb5b22087e08b21ab767718187ac3396aca4d0aa6c6473f925b19a74d9a00480ca7a76e + languageName: node + linkType: hard + +"ignore-walk@npm:^6.0.0": + version: 6.0.5 + resolution: "ignore-walk@npm:6.0.5" + dependencies: + minimatch: "npm:^9.0.0" + checksum: 10c0/8bd6d37c82400016c7b6538b03422dde8c9d7d3e99051c8357dd205d499d42828522fb4fbce219c9c21b4b069079445bacdc42bbd3e2e073b52856c2646d8a39 + languageName: node + linkType: hard + +"ignore@npm:^5.0.4, ignore@npm:^5.1.1, ignore@npm:^5.1.9, ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + +"image-size@npm:~0.5.0": + version: 0.5.5 + resolution: "image-size@npm:0.5.5" + bin: + image-size: bin/image-size.js + checksum: 10c0/655204163af06732f483a9fe7cce9dff4a29b7b2e88f5c957a5852e8143fa750f5e54b1955a2ca83de99c5220dbd680002d0d4e09140b01433520f4d5a0b1f4c + languageName: node + linkType: hard + +"immutable@npm:^4.0.0": + version: 4.3.7 + resolution: "immutable@npm:4.3.7" + checksum: 10c0/9b099197081b22f6433003e34929da8ecddbbdc1474cdc8aa3b7669dee4adda349c06143de22def36016d1b6de5322b043eccd7a11db1dad2ca85dad4fff5435 + languageName: node + linkType: hard + +"import-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "import-cwd@npm:3.0.0" + dependencies: + import-from: "npm:^3.0.0" + checksum: 10c0/398eff50e400b0db4ccabf7626391ac3aa959d9f95e659cd26d217f9d33b41f3aa02b7056ac4c3a2bf1d12b359b4761756d784f470c223297774480f6546857d + languageName: node + linkType: hard + +"import-fresh@npm:^3.0.0, import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + languageName: node + linkType: hard + +"import-from@npm:^3.0.0": + version: 3.0.0 + resolution: "import-from@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/83a40470190f2d9c6ca6a0a2d2de40e9d0b38eedeb2409320a44eaeed48751678e206c9ac7fefef18be19c95ad1cc0e98c844fdf631ab3d9a5597c3476e7525f + languageName: node + linkType: hard + +"import-from@npm:^4.0.0": + version: 4.0.0 + resolution: "import-from@npm:4.0.0" + checksum: 10c0/7fd98650d555e418c18341fef49ae11afc833f5ae70b7043e99684187cba6ac6b52e4118a491bd9f856045495bef5bdda7321095e65bcb2ef70ce2adf9f0d8d1 + languageName: node + linkType: hard + +"import-local@npm:^3.0.2": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"indexof@npm:~0.0.1": + version: 0.0.1 + resolution: "indexof@npm:0.0.1" + checksum: 10c0/31f2b90def1d5429db21384a10d0ccc0d7bdbf0566d30d7fcabf99c7c2b7ffe420bb8fabadcce85e3d453b0e590c507de64401abe8c3eb238c878e78fcb98d33 + languageName: node + linkType: hard + +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 10c0/a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3, inherits@npm:~2.0.4": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 10c0/6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 + languageName: node + linkType: hard + +"ini@npm:2.0.0": + version: 2.0.0 + resolution: "ini@npm:2.0.0" + checksum: 10c0/2e0c8f386369139029da87819438b20a1ff3fe58372d93fb1a86e9d9344125ace3a806b8ec4eb160a46e64cbc422fe68251869441676af49b7fc441af2389c25 + languageName: node + linkType: hard + +"ini@npm:4.1.1": + version: 4.1.1 + resolution: "ini@npm:4.1.1" + checksum: 10c0/7fddc8dfd3e63567d4fdd5d999d1bf8a8487f1479d0b34a1d01f28d391a9228d261e19abc38e1a6a1ceb3400c727204fce05725d5eb598dfcf2077a1e3afe211 + languageName: node + linkType: hard + +"ini@npm:^1.3.4, ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + languageName: node + linkType: hard + +"ini@npm:^3.0.0, ini@npm:^3.0.1": + version: 3.0.1 + resolution: "ini@npm:3.0.1" + checksum: 10c0/4473d8d42d4b0c4fcf8707e5d37a7eacd5a1d2ed2b99f1b6805c76efddf674c3deba6fb26811eeeb883a71d6c6917c3250d336e545b4e2c8d96081bf05e58df6 + languageName: node + linkType: hard + +"init-package-json@npm:^3.0.2": + version: 3.0.2 + resolution: "init-package-json@npm:3.0.2" + dependencies: + npm-package-arg: "npm:^9.0.1" + promzard: "npm:^0.3.0" + read: "npm:^1.0.7" + read-package-json: "npm:^5.0.0" + semver: "npm:^7.3.5" + validate-npm-package-license: "npm:^3.0.4" + validate-npm-package-name: "npm:^4.0.0" + checksum: 10c0/6efb57881d31af86006795df1def73fa997729ad57ff2e74346128653a1f21e417d194353b7733fd2edef8a79389ee9c1f56c65ce7b0809c3041229599366e6e + languageName: node + linkType: hard + +"inquirer@npm:8.2.4": + version: 8.2.4 + resolution: "inquirer@npm:8.2.4" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.1" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.21" + mute-stream: "npm:0.0.8" + ora: "npm:^5.4.1" + run-async: "npm:^2.4.0" + rxjs: "npm:^7.5.5" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/e8c6185548a2da6a04b6d2096d9173451ae8aa01432bfd8a5ffcd29fb871ed7764419a4fd693fbfb99621891b54c131f5473f21660d4808d25c6818618f2de73 + languageName: node + linkType: hard + +"inquirer@npm:8.2.6": + version: 8.2.6 + resolution: "inquirer@npm:8.2.6" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.1" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.21" + mute-stream: "npm:0.0.8" + ora: "npm:^5.4.1" + run-async: "npm:^2.4.0" + rxjs: "npm:^7.5.5" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + wrap-ansi: "npm:^6.0.1" + checksum: 10c0/eb5724de1778265323f3a68c80acfa899378cb43c24cdcb58661386500e5696b6b0b6c700e046b7aa767fe7b4823c6f04e6ddc268173e3f84116112529016296 + languageName: node + linkType: hard + +"interface-datastore@npm:^7.0.0": + version: 7.0.4 + resolution: "interface-datastore@npm:7.0.4" + dependencies: + interface-store: "npm:^3.0.0" + nanoid: "npm:^4.0.0" + uint8arrays: "npm:^4.0.2" + checksum: 10c0/b71287fce878ea791b5434ef8f0b68163d110b0035e7a65825d46e511937fd8f92be566b62d384a2386e68e8544ec7d8f2aed40c6bc64698ce12d4ea4331b00b + languageName: node + linkType: hard + +"interface-datastore@npm:^8.2.0": + version: 8.3.1 + resolution: "interface-datastore@npm:8.3.1" + dependencies: + interface-store: "npm:^6.0.0" + uint8arrays: "npm:^5.1.0" + checksum: 10c0/7b7fbe94fe00ed8a69e2197a0b58fa7db733d7a7110dfaa259fc19c9cb1761402a9f31063d4d87676e4d2213ed94b06d3f2b9dd65bc727e89bd0dbfbc17882a1 + languageName: node + linkType: hard + +"interface-store@npm:^3.0.0": + version: 3.0.4 + resolution: "interface-store@npm:3.0.4" + checksum: 10c0/ce3ccbd63df0081d67cf7fb664da03b6c415efeedf116841aa8ea1505881b4c540e93ac61594fbe65ad88b7529ef09ad7c85e1a8ab83002855219a5ba86b4cda + languageName: node + linkType: hard + +"interface-store@npm:^6.0.0": + version: 6.0.2 + resolution: "interface-store@npm:6.0.2" + checksum: 10c0/26650c98c411fcf5dfeec76d4433f9ca594c2d27cc7afb285b618132d512b62d684471054b2fb4e687b477ab36f1ca21fd81caad404925502a4a54160a7158c4 + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c + languageName: node + linkType: hard + +"into-stream@npm:^6.0.0": + version: 6.0.0 + resolution: "into-stream@npm:6.0.0" + dependencies: + from2: "npm:^2.3.0" + p-is-promise: "npm:^3.0.0" + checksum: 10c0/576319a540d0e494f5f6028db364b0e163d58020139d862e5372c51ac35875e4ac2ee49fd821bb9225642de6add2e26dff82e5c41108d638a95930fa83bad750 + languageName: node + linkType: hard + +"invariant@npm:2.2.4": + version: 2.2.4 + resolution: "invariant@npm:2.2.4" + dependencies: + loose-envify: "npm:^1.0.0" + checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"ip-regex@npm:^4.1.0": + version: 4.3.0 + resolution: "ip-regex@npm:4.3.0" + checksum: 10c0/f9ef1f5d0df05b9133a882974e572ae525ccd205260cb103dae337f1fc7451ed783391acc6ad688e56dd2598f769e8e72ecbb650ec34763396af822a91768562 + languageName: node + linkType: hard + +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a + languageName: node + linkType: hard + +"ipaddr.js@npm:^2.0.1": + version: 2.2.0 + resolution: "ipaddr.js@npm:2.2.0" + checksum: 10c0/e4ee875dc1bd92ac9d27e06cfd87cdb63ca786ff9fd7718f1d4f7a8ef27db6e5d516128f52d2c560408cbb75796ac2f83ead669e73507c86282d45f84c5abbb6 + languageName: node + linkType: hard + +"ipfs-client@npm:^0.9.2": + version: 0.9.2 + resolution: "ipfs-client@npm:0.9.2" + dependencies: + ipfs-grpc-client: "npm:^0.12.0" + ipfs-http-client: "npm:^59.0.0" + merge-options: "npm:^3.0.4" + checksum: 10c0/c3a41cc915ab4ad5ee90994735f5e9abc5c1118bca911089880e21f1f418fff1bf28e9f7d1023854a54949f0b221623b28b2c1322d4bd3b3c7037a7a6b310981 + languageName: node + linkType: hard + +"ipfs-core-types@npm:^0.13.0": + version: 0.13.0 + resolution: "ipfs-core-types@npm:0.13.0" + dependencies: + "@ipld/dag-pb": "npm:^3.0.0" + "@libp2p/interface-keychain": "npm:^1.0.3" + "@libp2p/interface-peer-id": "npm:^1.0.4" + "@libp2p/interface-peer-info": "npm:^1.0.2" + "@libp2p/interface-pubsub": "npm:^3.0.0" + "@multiformats/multiaddr": "npm:^11.0.0" + "@types/node": "npm:^18.0.0" + interface-datastore: "npm:^7.0.0" + ipfs-unixfs: "npm:^8.0.0" + multiformats: "npm:^10.0.0" + checksum: 10c0/fc86644dedaf30a07f581df91ebd9606e3fa2a3a91fd9183f17be5d76f7845bec8741a5865cd664cac274c3861789423a1b8488ef5d444b96a350a0651263552 + languageName: node + linkType: hard + +"ipfs-core-utils@npm:^0.17.0": + version: 0.17.0 + resolution: "ipfs-core-utils@npm:0.17.0" + dependencies: + "@libp2p/logger": "npm:^2.0.0" + "@multiformats/multiaddr": "npm:^11.0.0" + "@multiformats/multiaddr-to-uri": "npm:^9.0.1" + any-signal: "npm:^3.0.0" + blob-to-it: "npm:^2.0.0" + browser-readablestream-to-it: "npm:^2.0.0" + err-code: "npm:^3.0.1" + ipfs-core-types: "npm:^0.13.0" + ipfs-unixfs: "npm:^8.0.0" + ipfs-utils: "npm:^9.0.6" + it-all: "npm:^2.0.0" + it-map: "npm:^2.0.0" + it-peekable: "npm:^2.0.0" + it-to-stream: "npm:^1.0.0" + merge-options: "npm:^3.0.4" + multiformats: "npm:^10.0.0" + nanoid: "npm:^4.0.0" + parse-duration: "npm:^1.0.0" + timeout-abort-controller: "npm:^3.0.0" + uint8arrays: "npm:^4.0.2" + checksum: 10c0/597fa939c0f42981974b9acef415a0bde84f33b5a99b4b9af6128bf5e911bdca4fc4be22e1df1970be07437e4bfbd1ee4a2d2e9f3c69bfe9ae7783473e52f1cf + languageName: node + linkType: hard + +"ipfs-grpc-client@npm:^0.12.0": + version: 0.12.0 + resolution: "ipfs-grpc-client@npm:0.12.0" + dependencies: + "@improbable-eng/grpc-web": "npm:^0.15.0" + "@libp2p/logger": "npm:^2.0.0" + "@libp2p/peer-id": "npm:^1.1.10" + "@multiformats/multiaddr": "npm:^11.0.0" + change-case: "npm:^4.1.1" + err-code: "npm:^3.0.1" + ipfs-core-types: "npm:^0.13.0" + ipfs-core-utils: "npm:^0.17.0" + ipfs-grpc-protocol: "npm:^0.7.0" + ipfs-unixfs: "npm:^8.0.0" + it-first: "npm:^2.0.0" + it-pushable: "npm:^3.0.0" + multiformats: "npm:^10.0.0" + p-defer: "npm:^4.0.0" + protobufjs: "npm:^7.0.0" + uint8arrays: "npm:^4.0.2" + wherearewe: "npm:^2.0.1" + ws: "npm:^8.5.0" + checksum: 10c0/f23b9ae1e2f4dc59e59fd4e04e78dcdae9d9314da7f53cf97a8da38b9655db74c89a69ac3c50bbfcca554a6d74f2e682e184de4f5e2ebb6e25d9700b4eb5725e + languageName: node + linkType: hard + +"ipfs-grpc-protocol@npm:^0.7.0": + version: 0.7.0 + resolution: "ipfs-grpc-protocol@npm:0.7.0" + checksum: 10c0/6c66c27449bde40c6bf15325b1d6c21199370bf4a950e1d3ec4374afdfd50a6a2491ffc35edf7cebb24103e8c4320d92f5b4e695b3f985965b17bd2320f7b952 + languageName: node + linkType: hard + +"ipfs-http-client@npm:^59.0.0": + version: 59.0.0 + resolution: "ipfs-http-client@npm:59.0.0" + dependencies: + "@ipld/dag-cbor": "npm:^8.0.0" + "@ipld/dag-json": "npm:^9.0.0" + "@ipld/dag-pb": "npm:^3.0.0" + "@libp2p/logger": "npm:^2.0.0" + "@libp2p/peer-id": "npm:^1.1.10" + "@multiformats/multiaddr": "npm:^11.0.0" + any-signal: "npm:^3.0.0" + dag-jose: "npm:^3.0.1" + err-code: "npm:^3.0.1" + ipfs-core-types: "npm:^0.13.0" + ipfs-core-utils: "npm:^0.17.0" + ipfs-utils: "npm:^9.0.6" + it-first: "npm:^2.0.0" + it-last: "npm:^2.0.0" + merge-options: "npm:^3.0.4" + multiformats: "npm:^10.0.0" + parse-duration: "npm:^1.0.0" + stream-to-it: "npm:^0.2.2" + uint8arrays: "npm:^4.0.2" + checksum: 10c0/0871f75acce5cb8125d9f0162bbeea070486b937afb2591577c972ece657106dd66e71735609134f3a5ffd766f3570b5f7905f9faf91943544f36d29921ba16f + languageName: node + linkType: hard + +"ipfs-unixfs@npm:^8.0.0": + version: 8.0.0 + resolution: "ipfs-unixfs@npm:8.0.0" + dependencies: + err-code: "npm:^3.0.1" + protobufjs: "npm:^7.0.0" + checksum: 10c0/f423ed31d4a01c8c6ac869177662492140f166a8d53a91a57bf69ba446c3c9f00924669968ca7d0c5b71163cbc98c5bd60ea0eaf67d223362f68ba22f83dcccb + languageName: node + linkType: hard + +"ipfs-utils@npm:^9.0.6": + version: 9.0.14 + resolution: "ipfs-utils@npm:9.0.14" + dependencies: + any-signal: "npm:^3.0.0" + browser-readablestream-to-it: "npm:^1.0.0" + buffer: "npm:^6.0.1" + electron-fetch: "npm:^1.7.2" + err-code: "npm:^3.0.1" + is-electron: "npm:^2.2.0" + iso-url: "npm:^1.1.5" + it-all: "npm:^1.0.4" + it-glob: "npm:^1.0.1" + it-to-stream: "npm:^1.0.0" + merge-options: "npm:^3.0.4" + nanoid: "npm:^3.1.20" + native-fetch: "npm:^3.0.0" + node-fetch: "npm:^2.6.8" + react-native-fetch-api: "npm:^3.0.0" + stream-to-it: "npm:^0.2.2" + checksum: 10c0/c2b91a85d7d927c071d122ae4d70b7de7d47860c4ffbc18ce34bec7582e047194c2a52755caebc8c12cb68ec2106bd467246b835564b047738a2bddb03811401 + languageName: node + linkType: hard + +"iron-webcrypto@npm:^1.2.1": + version: 1.2.1 + resolution: "iron-webcrypto@npm:1.2.1" + checksum: 10c0/5cf27c6e2bd3ef3b4970e486235fd82491ab8229e2ed0ac23307c28d6c80d721772a86ed4e9fe2a5cabadd710c2f024b706843b40561fb83f15afee58f809f66 + languageName: node + linkType: hard + +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + languageName: node + linkType: hard + +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: "npm:^1.0.1" + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + languageName: node + linkType: hard + +"is-builtin-module@npm:^3.1.0": + version: 3.2.1 + resolution: "is-builtin-module@npm:3.2.1" + dependencies: + builtin-modules: "npm:^3.3.0" + checksum: 10c0/5a66937a03f3b18803381518f0ef679752ac18cdb7dd53b5e23ee8df8d440558737bd8dcc04d2aae555909d2ecb4a81b5c0d334d119402584b61e6a003e31af1 + languageName: node + linkType: hard + +"is-bun-module@npm:^1.0.2": + version: 1.2.1 + resolution: "is-bun-module@npm:1.2.1" + dependencies: + semver: "npm:^7.6.3" + checksum: 10c0/819e63cd4468265a3e89cdc241554e37aeb85e40375a56dd559c022f4395491273267a0f843274fda6cad1eac3b0f8dc6d9e06cc349e33e2bf45098761184736 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-ci@npm:^3.0.0": + version: 3.0.1 + resolution: "is-ci@npm:3.0.1" + dependencies: + ci-info: "npm:^3.2.0" + bin: + is-ci: bin.js + checksum: 10c0/0e81caa62f4520d4088a5bef6d6337d773828a88610346c4b1119fb50c842587ed8bef1e5d9a656835a599e7209405b5761ddf2339668f2d0f4e889a92fe6051 + languageName: node + linkType: hard + +"is-cidr@npm:^4.0.2": + version: 4.0.2 + resolution: "is-cidr@npm:4.0.2" + dependencies: + cidr-regex: "npm:^3.1.1" + checksum: 10c0/64d8e03304a8c479b338fbe4341e8a37a9dd6fa1e0e95c93e7121b64f50ef154346965779c5e3bc1460915eb04a57564909d9199adb627dc7ec1ac2cfd282f10 + languageName: node + linkType: hard + +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": + version: 2.15.1 + resolution: "is-core-module@npm:2.15.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/53432f10c69c40bfd2fa8914133a68709ff9498c86c3bf5fca3cdf3145a56fd2168cbf4a43b29843a6202a120a5f9c5ffba0a4322e1e3441739bc0b641682612 + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-view@npm:1.0.1" + dependencies: + is-typed-array: "npm:^1.1.13" + checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc + languageName: node + linkType: hard + +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + languageName: node + linkType: hard + +"is-electron@npm:^2.2.0": + version: 2.2.2 + resolution: "is-electron@npm:2.2.2" + checksum: 10c0/327bb373f7be01b16cdff3998b5ddaa87d28f576092affaa7fe0659571b3306fdd458afbf0683a66841e7999af13f46ad0e1b51647b469526cd05a4dd736438a + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: "npm:^3.0.0" + bin: + is-inside-container: cli.js + checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + +"is-installed-globally@npm:~0.4.0": + version: 0.4.0 + resolution: "is-installed-globally@npm:0.4.0" + dependencies: + global-dirs: "npm:^3.0.0" + is-path-inside: "npm:^3.0.2" + checksum: 10c0/f3e6220ee5824b845c9ed0d4b42c24272701f1f9926936e30c0e676254ca5b34d1b92c6205cae11b283776f9529212c0cdabb20ec280a6451677d6493ca9c22d + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + +"is-interactive@npm:^2.0.0": + version: 2.0.0 + resolution: "is-interactive@npm:2.0.0" + checksum: 10c0/801c8f6064f85199dc6bf99b5dd98db3282e930c3bc197b32f2c5b89313bb578a07d1b8a01365c4348c2927229234f3681eb861b9c2c92bee72ff397390fa600 + languageName: node + linkType: hard + +"is-json@npm:^2.0.1": + version: 2.0.1 + resolution: "is-json@npm:2.0.1" + checksum: 10c0/49233aa560396e6365186be2f3a4618bf8b8067c1a97f2a25b8de09a9d7f326985f0163508067abeae5a21c69594a2a537f0147a5c4050ef097c15964e994cb4 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"is-map@npm:^2.0.2, is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + +"is-mobile@npm:4.0.0": + version: 4.0.0 + resolution: "is-mobile@npm:4.0.0" + checksum: 10c0/7d1f1c9ead3f140728318df7b1d6f2f19f28d96bf09c3a9016fe473ccccd32c4d03a01aeec68b612d48f1c0f776e7f1f18a1d83a7e95fb8199b4eb8536db01bc + languageName: node + linkType: hard + +"is-module@npm:^1.0.0": + version: 1.0.0 + resolution: "is-module@npm:1.0.0" + checksum: 10c0/795a3914bcae7c26a1c23a1e5574c42eac13429625045737bf3e324ce865c0601d61aee7a5afbca1bee8cb300c7d9647e7dc98860c9bdbc3b7fdc51d8ac0bffc + languageName: node + linkType: hard + +"is-my-ip-valid@npm:^1.0.0": + version: 1.0.1 + resolution: "is-my-ip-valid@npm:1.0.1" + checksum: 10c0/61bc2dac50aa664b9fc9edb7aa7a68363a554dea2432e09766b6b860fcda5fc60aad6d47d273be635511346c4c4964dc1f3f96f8c8db02f1e380ad9992d67cca + languageName: node + linkType: hard + +"is-my-json-valid@npm:^2.20.6": + version: 2.20.6 + resolution: "is-my-json-valid@npm:2.20.6" + dependencies: + generate-function: "npm:^2.0.0" + generate-object-property: "npm:^1.1.0" + is-my-ip-valid: "npm:^1.0.0" + jsonpointer: "npm:^5.0.0" + xtend: "npm:^4.0.0" + checksum: 10c0/1f74c24db02b3ee9dc7042f828b4fb204566350d72b01ca1efa8a61e8c41fab8ef664dfeb1158c11de29a3ca87ac2645b9829e50116205919a1da91b7039d041 + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "is-obj@npm:2.0.0" + checksum: 10c0/85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e + languageName: node + linkType: hard + +"is-object@npm:~0.1.2": + version: 0.1.2 + resolution: "is-object@npm:0.1.2" + checksum: 10c0/9bff284757ac9173337966fff97b5b9111f437a021a14db357df0e6fe3a53819889b326bc56370e2f1dfb57767f6918c55c01555be880cf7fe6388ec557c3bd0 + languageName: node + linkType: hard + +"is-path-cwd@npm:^2.2.0": + version: 2.2.0 + resolution: "is-path-cwd@npm:2.2.0" + checksum: 10c0/afce71533a427a759cd0329301c18950333d7589533c2c90205bd3fdcf7b91eb92d1940493190567a433134d2128ec9325de2fd281e05be1920fbee9edd22e0a + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.2": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-plain-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "is-plain-obj@npm:1.1.0" + checksum: 10c0/daaee1805add26f781b413fdf192fc91d52409583be30ace35c82607d440da63cc4cac0ac55136716688d6c0a2c6ef3edb2254fecbd1fe06056d6bd15975ee8c + languageName: node + linkType: hard + +"is-plain-obj@npm:^2.1.0": + version: 2.1.0 + resolution: "is-plain-obj@npm:2.1.0" + checksum: 10c0/e5c9814cdaa627a9ad0a0964ded0e0491bfd9ace405c49a5d63c88b30a162f1512c069d5b80997893c4d0181eadc3fed02b4ab4b81059aba5620bfcdfdeb9c53 + languageName: node + linkType: hard + +"is-plain-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "is-plain-obj@npm:3.0.0" + checksum: 10c0/8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 + languageName: node + linkType: hard + +"is-plain-object@npm:^3.0.0": + version: 3.0.1 + resolution: "is-plain-object@npm:3.0.1" + checksum: 10c0/eac88599d3f030b313aa5a12d09bd3c52ce3b8cd975b2fdda6bb3bb69ac0bc1b93cd292123769eb480b914d1dd1fed7633cdeb490458d41294eb32efdedec230 + languageName: node + linkType: hard + +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: 10c0/893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c + languageName: node + linkType: hard + +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: 10c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 + languageName: node + linkType: hard + +"is-property@npm:^1.0.0, is-property@npm:^1.0.2": + version: 1.0.2 + resolution: "is-property@npm:1.0.2" + checksum: 10c0/33ab65a136e4ba3f74d4f7d9d2a013f1bd207082e11cedb160698e8d5394644e873c39668d112a402175ccbc58a087cef87198ed46829dbddb479115a0257283 + languageName: node + linkType: hard + +"is-reference@npm:^1.2.1": + version: 1.2.1 + resolution: "is-reference@npm:1.2.1" + dependencies: + "@types/estree": "npm:*" + checksum: 10c0/7dc819fc8de7790264a0a5d531164f9f5b9ef5aa1cd05f35322d14db39c8a2ec78fd5d4bf57f9789f3ddd2b3abeea7728432b759636157a42db12a9e8c3b549b + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + languageName: node + linkType: hard + +"is-set@npm:^2.0.2, is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: "npm:^1.0.2" + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + languageName: node + linkType: hard + +"is-text-path@npm:^1.0.1": + version: 1.0.1 + resolution: "is-text-path@npm:1.0.1" + dependencies: + text-extensions: "npm:^1.0.0" + checksum: 10c0/61c8650c29548febb6bf69e9541fc11abbbb087a0568df7bc471ba264e95fb254def4e610631cbab4ddb0a1a07949d06416f4ebeaf37875023fb184cdb87ee84 + languageName: node + linkType: hard + +"is-text-path@npm:^2.0.0": + version: 2.0.0 + resolution: "is-text-path@npm:2.0.0" + dependencies: + text-extensions: "npm:^2.0.0" + checksum: 10c0/e3c470e1262a3a54aa0fca1c0300b2659a7aed155714be6b643f88822c03bcfa6659b491f7a05c5acd3c1a3d6d42bab47e1bdd35bcc3a25973c4f26b2928bc1a + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" + dependencies: + which-typed-array: "npm:^1.1.14" + checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca + languageName: node + linkType: hard + +"is-typedarray@npm:~1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 10c0/4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^1.1.0": + version: 1.3.0 + resolution: "is-unicode-supported@npm:1.3.0" + checksum: 10c0/b8674ea95d869f6faabddc6a484767207058b91aea0250803cbf1221345cb0c56f466d4ecea375dc77f6633d248d33c47bd296fb8f4cdba0b4edba8917e83d8a + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/8ad6141b6a400e7ce7c7442a13928c676d07b1f315ab77d9912920bf5f4170622f43126f111615788f26c3b1871158a6797c862233124507db0bcc33a9537d1a + languageName: node + linkType: hard + +"is-what@npm:^3.14.1": + version: 3.14.1 + resolution: "is-what@npm:3.14.1" + checksum: 10c0/4b770b85454c877b6929a84fd47c318e1f8c2ff70fd72fd625bc3fde8e0c18a6e57345b6e7aa1ee9fbd1c608d27cfe885df473036c5c2e40cd2187250804a2c7 + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: "npm:^2.0.0" + checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e + languageName: node + linkType: hard + +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: "npm:^1.0.0" + checksum: 10c0/d3317c11995690a32c362100225e22ba793678fe8732660c6de511ae71a0ff05b06980cf21f98a6bf40d7be0e9e9506f859abe00a1118287d63e53d0a3d06947 + languageName: node + linkType: hard + +"is64bit@npm:^2.0.0": + version: 2.0.0 + resolution: "is64bit@npm:2.0.0" + dependencies: + system-architecture: "npm:^0.1.0" + checksum: 10c0/9f3741d4b7560e2a30b9ce0c79bb30c7bdcc5df77c897bd59bb68f0fd882ae698015e8da81d48331def66c778d430c1ae3cb8c1fcc34e96c576b66198395faa7 + languageName: node + linkType: hard + +"is@npm:~0.2.6": + version: 0.2.7 + resolution: "is@npm:0.2.7" + checksum: 10c0/321d9bd040a6f0ace665cc5f09485aecea61dff304b973d1f6e245dedb3786e1b49ed357d10353b0530bc80fe66b6bc4beea388fc6dcc881e39e2c8bd622ccef + languageName: node + linkType: hard + +"isarray@npm:0.0.1": + version: 0.0.1 + resolution: "isarray@npm:0.0.1" + checksum: 10c0/ed1e62da617f71fe348907c71743b5ed550448b455f8d269f89a7c7ddb8ae6e962de3dab6a74a237b06f5eb7f6ece7a45ada8ce96d87fe972926530f91ae3311 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isbuffer@npm:~0.0.0": + version: 0.0.0 + resolution: "isbuffer@npm:0.0.0" + checksum: 10c0/9f39d98a2ca54a84680617a857fbff2559cb66091e09b9363659bacbacd3f59895f7e189387529b162ea48272cb9d4304e8efd498f26d5af53835c8c34bb4694 + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"iso-url@npm:^1.1.5": + version: 1.2.1 + resolution: "iso-url@npm:1.2.1" + checksum: 10c0/73be82eaaf5530acb1b6a46829e0dfb050c62790b8dc04d7fb7e290b63c88846b4d861ecf3a6bc7e0a3d74e569ea53c0fb951d596e06d6c6dd0cf4342d59ecc9 + languageName: node + linkType: hard + +"isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db + languageName: node + linkType: hard + +"isomorphic-unfetch@npm:3.1.0, isomorphic-unfetch@npm:^3.1.0": + version: 3.1.0 + resolution: "isomorphic-unfetch@npm:3.1.0" + dependencies: + node-fetch: "npm:^2.6.1" + unfetch: "npm:^4.2.0" + checksum: 10c0/d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 + languageName: node + linkType: hard + +"isows@npm:1.0.3": + version: 1.0.3 + resolution: "isows@npm:1.0.3" + peerDependencies: + ws: "*" + checksum: 10c0/adec15db704bb66615dd8ef33f889d41ae2a70866b21fa629855da98cc82a628ae072ee221fe9779a9a19866cad2a3e72593f2d161a0ce0e168b4484c7df9cd2 + languageName: node + linkType: hard + +"isows@npm:1.0.4": + version: 1.0.4 + resolution: "isows@npm:1.0.4" + peerDependencies: + ws: "*" + checksum: 10c0/46f43b07edcf148acba735ddfc6ed985e1e124446043ea32b71023e67671e46619c8818eda8c34a9ac91cb37c475af12a3aeeee676a88a0aceb5d67a3082313f + languageName: node + linkType: hard + +"isows@npm:1.0.6": + version: 1.0.6 + resolution: "isows@npm:1.0.6" + peerDependencies: + ws: "*" + checksum: 10c0/f89338f63ce2f497d6cd0f86e42c634209328ebb43b3bdfdc85d8f1589ee75f02b7e6d9e1ba274101d0f6f513b1b8cbe6985e6542b4aaa1f0c5fd50d9c1be95c + languageName: node + linkType: hard + +"isstream@npm:~0.1.2": + version: 0.1.2 + resolution: "isstream@npm:0.1.2" + checksum: 10c0/a6686a878735ca0a48e0d674dd6d8ad31aedfaf70f07920da16ceadc7577b46d67179a60b313f2e6860cb097a2c2eb3cbd0b89e921ae89199a59a17c3273d66f + languageName: node + linkType: hard + +"issue-parser@npm:^6.0.0": + version: 6.0.0 + resolution: "issue-parser@npm:6.0.0" + dependencies: + lodash.capitalize: "npm:^4.2.1" + lodash.escaperegexp: "npm:^4.1.2" + lodash.isplainobject: "npm:^4.0.6" + lodash.isstring: "npm:^4.0.1" + lodash.uniqby: "npm:^4.7.0" + checksum: 10c0/3bfc48ca5c380061ba3db9bfb0c2a86692c74245a386d8add5eb7cd60022c85f44277692d78914ff0d37cf0da7d1743149516d00175233949c85c056d12e3b49 + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^6.3.0" + checksum: 10c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + +"it-all@npm:^1.0.4": + version: 1.0.6 + resolution: "it-all@npm:1.0.6" + checksum: 10c0/366b5f7b9ceda9c1183d6d67c94e9e8216e21d6a037068881941c6e625aa76e47833a82c328263d118c66d5c3fcf3ebb482a38d6cfa8aebe03c56db791a711f6 + languageName: node + linkType: hard + +"it-all@npm:^2.0.0": + version: 2.0.1 + resolution: "it-all@npm:2.0.1" + checksum: 10c0/f9a035726d1d1ffd0bcfdd534e649dbff8d9c69fd43c777d7f4c0f73122c1efbbdda3fbe9d9b90750751e81412a40c4e02baafa2748d1a723ab6c023dfd5f876 + languageName: node + linkType: hard + +"it-first@npm:^2.0.0": + version: 2.0.1 + resolution: "it-first@npm:2.0.1" + checksum: 10c0/b17fd7d92bec414285f13261c3ef59a50357970db5dd8ab5a3d5fc746d718f1b2fb1f2510bd4e4428360f75d0fcd1ef5e6f8d1519235b70b7f95a845a2e5464b + languageName: node + linkType: hard + +"it-glob@npm:^1.0.1": + version: 1.0.2 + resolution: "it-glob@npm:1.0.2" + dependencies: + "@types/minimatch": "npm:^3.0.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/461f6b80fefbba7b915f29b297038f473b965d32bfde33507ba938da408eccccf5b2ea98aad55b0afe3aff7d4f6bbb7af5a92e27b25ae7e4590a859b339e4f88 + languageName: node + linkType: hard + +"it-last@npm:^2.0.0": + version: 2.0.1 + resolution: "it-last@npm:2.0.1" + checksum: 10c0/096e968b6039999a9740d3b0f35b7c50496c14bc9358ee62db73384030662e7f024f49b6dec83b140835df923e1dbe3db1ccf636866fa7e4c70d7ba31097b902 + languageName: node + linkType: hard + +"it-map@npm:^2.0.0": + version: 2.0.1 + resolution: "it-map@npm:2.0.1" + checksum: 10c0/d03d27dd11b76acb30392d394b1f5254cd98963cb8c4f8303899f66046149d3393afaa5e72040ed37802af4e162d3fe19a9059a503767001f1413058f8a1afd9 + languageName: node + linkType: hard + +"it-peekable@npm:^2.0.0": + version: 2.0.1 + resolution: "it-peekable@npm:2.0.1" + checksum: 10c0/58031e7223a2c1702015d7a14c3da4bda06c8b8debf99640f9f0b8fb3b643de9074ad143bf97dbfc51081fad68888648cd178ee13568027753eb8d7f6b204f7a + languageName: node + linkType: hard + +"it-pushable@npm:^3.0.0": + version: 3.2.3 + resolution: "it-pushable@npm:3.2.3" + dependencies: + p-defer: "npm:^4.0.0" + checksum: 10c0/ba99744f0a6fe9e555bdde76ce2144a3e35c37a33830c69d65f5512129fb5a58272f1bbb4b9741fca69be868c301109fc910b26629c8eb0961f0503dd80a4830 + languageName: node + linkType: hard + +"it-stream-types@npm:^1.0.4": + version: 1.0.5 + resolution: "it-stream-types@npm:1.0.5" + checksum: 10c0/933570cc782036a5326ff8952c871db7638ac3e0b21ab2fc293507c1b303a5aab980642a87aa693675d477e6c07c57eea3d32d853f0bd7836aee734199130d25 + languageName: node + linkType: hard + +"it-to-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "it-to-stream@npm:1.0.0" + dependencies: + buffer: "npm:^6.0.3" + fast-fifo: "npm:^1.0.0" + get-iterator: "npm:^1.0.2" + p-defer: "npm:^3.0.0" + p-fifo: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/92415ba12aac6df438ab941bcb8ca3bda4c6d1ce50756d3aa55916e8ab0e85e069c571b45cd27a0c85b0370adb062d843995a18257c93f4ef2237b21f66666b4 + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" + dependencies: + define-properties: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + reflect.getprototypeof: "npm:^1.0.4" + set-function-name: "npm:^2.0.1" + checksum: 10c0/a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"jackspeak@npm:^4.0.1": + version: 4.0.2 + resolution: "jackspeak@npm:4.0.2" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + checksum: 10c0/b26039d11c0163a95b1e58851b9ac453cce64ad6d1eb98a00b303ad5eeb761b29d33c9419d1e16c016d3f7151c8edf7df223e6cf93a1907655fd95d6ce85c0de + languageName: node + linkType: hard + +"jake@npm:^10.8.5": + version: 10.9.2 + resolution: "jake@npm:10.9.2" + dependencies: + async: "npm:^3.2.3" + chalk: "npm:^4.0.2" + filelist: "npm:^1.0.4" + minimatch: "npm:^3.1.2" + bin: + jake: bin/cli.js + checksum: 10c0/c4597b5ed9b6a908252feab296485a4f87cba9e26d6c20e0ca144fb69e0c40203d34a2efddb33b3d297b8bd59605e6c1f44f6221ca1e10e69175ecbf3ff5fe31 + languageName: node + linkType: hard + +"java-properties@npm:^1.0.0": + version: 1.0.2 + resolution: "java-properties@npm:1.0.2" + checksum: 10c0/be0f58c83b5a852f313de2ea57f7b8b7d46dc062b2ffe487d58838e7034d4660f4d22f2a96aae4daa622af6d734726c0d08b01396e59666ededbcfdc25a694d6 + languageName: node + linkType: hard + +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + co: "npm:^4.6.0" + dedent: "npm:^1.0.0" + is-generator-fn: "npm:^2.0.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + pure-rand: "npm:^6.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" + exit: "npm:^0.1.2" + import-local: "npm:^3.0.2" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + yargs: "npm:^17.3.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + deepmerge: "npm:^4.2.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 10c0/bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: "npm:^3.0.0" + checksum: 10c0/d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 + languageName: node + linkType: hard + +"jest-environment-jsdom@npm:29.7.0, jest-environment-jsdom@npm:^29.0.0": + version: 29.7.0 + resolution: "jest-environment-jsdom@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/jsdom": "npm:^20.0.0" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jsdom: "npm:^20.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/139b94e2c8ec1bb5a46ce17df5211da65ce867354b3fd4e00fa6a0d1da95902df4cf7881273fc6ea937e5c325d39d6773f0d41b6c469363334de9d489d2c321f + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/graceful-fs": "npm:^4.1.3" + "@types/node": "npm:*" + anymatch: "npm:^3.0.3" + fb-watchman: "npm:^2.0.0" + fsevents: "npm:^2.3.2" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + languageName: node + linkType: hard + +"jest-mock-extended@npm:*": + version: 3.0.7 + resolution: "jest-mock-extended@npm:3.0.7" + dependencies: + ts-essentials: "npm:^10.0.0" + peerDependencies: + jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 + typescript: ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: 10c0/17d2e816eae8e95933817102987ba9f700890c4b1223495012bca2ec76644cd203336843a4c381a662e03bde0b637767ad8e2c13b490e9a5eaeb87d211994647 + languageName: node + linkType: hard + +"jest-mock-extended@npm:2.0.6": + version: 2.0.6 + resolution: "jest-mock-extended@npm:2.0.6" + dependencies: + ts-essentials: "npm:^7.0.3" + peerDependencies: + jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 + typescript: ^3.0.0 || ^4.0.0 + checksum: 10c0/c5c36122b77b68b211cfda12f096b36739415133b9d6ec7a16fd42fb4bd71d8539ad1921b99feb894f504ed28a0f6d7a36903b2591d9de125b8f01d41fda0e54 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + checksum: 10c0/7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-preset-angular@npm:13.0.0": + version: 13.0.0 + resolution: "jest-preset-angular@npm:13.0.0" + dependencies: + bs-logger: "npm:^0.2.6" + esbuild: "npm:>=0.13.8" + esbuild-wasm: "npm:>=0.13.8" + jest-environment-jsdom: "npm:^29.0.0" + jest-util: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + ts-jest: "npm:^29.0.0" + peerDependencies: + "@angular-devkit/build-angular": ">=13.0.0 <16.0.0" + "@angular/compiler-cli": ">=13.0.0 <16.0.0" + "@angular/core": ">=13.0.0 <16.0.0" + "@angular/platform-browser-dynamic": ">=13.0.0 <16.0.0" + jest: ^29.0.0 + typescript: ">=4.4" + dependenciesMeta: + esbuild: + optional: true + checksum: 10c0/bac16ab41235bbdfb86c44f280e10c592e8d615a581c2fe2dc4a8c901da9506297e308e66b2197649ef9ea93515d1479f6800a989336cb6be45109136dc9bc7a + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-pnp-resolver: "npm:^1.2.2" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + resolve: "npm:^1.20.0" + resolve.exports: "npm:^2.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + cjs-module-lexer: "npm:^1.0.0" + collect-v8-coverage: "npm:^1.0.0" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@babel/generator": "npm:^7.7.2" + "@babel/plugin-syntax-jsx": "npm:^7.7.2" + "@babel/plugin-syntax-typescript": "npm:^7.7.2" + "@babel/types": "npm:^7.3.3" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + chalk: "npm:^4.0.0" + expect: "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + natural-compare: "npm:^1.4.0" + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 10c0/6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 + languageName: node + linkType: hard + +"jest-util@npm:^29.0.0, jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + languageName: node + linkType: hard + +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + leven: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 + languageName: node + linkType: hard + +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + jest-util: "npm:^29.7.0" + string-length: "npm:^4.0.1" + checksum: 10c0/ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 + languageName: node + linkType: hard + +"jest-worker@npm:^27.0.2, jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "npm:*" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b + languageName: node + linkType: hard + +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 + languageName: node + linkType: hard + +"jest@npm:*, jest@npm:29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + import-local: "npm:^3.0.2" + jest-cli: "npm:^29.7.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b + languageName: node + linkType: hard + +"jiti@npm:^1.18.2": + version: 1.21.6 + resolution: "jiti@npm:1.21.6" + bin: + jiti: bin/jiti.js + checksum: 10c0/05b9ed58cd30d0c3ccd3c98209339e74f50abd9a17e716f65db46b6a35812103f6bde6e134be7124d01745586bca8cc5dae1d0d952267c3ebe55171949c32e56 + languageName: node + linkType: hard + +"jiti@npm:^2.1.2": + version: 2.3.1 + resolution: "jiti@npm:2.3.1" + bin: + jiti: lib/jiti-cli.mjs + checksum: 10c0/0388bd52ad623973bb17f0b9604b1a28f2bf0beb9bc7f5805facde2183f8203d80b8360d0b400faf80718077e206a997fa9f4dba62735e86cd3a76905ca8b071 + languageName: node + linkType: hard + +"js-sha256@npm:*, js-sha256@npm:^0.11.0": + version: 0.11.0 + resolution: "js-sha256@npm:0.11.0" + checksum: 10c0/90980fe01ca01fbd166751fb16c4caa09c1ab997e8bf77c0764cc05c772c6044946f4c1b3bad266ce78357280d2131d3dc0cf2dd7646e78272996bd4d590aa4f + languageName: node + linkType: hard + +"js-sha256@npm:0.9.0, js-sha256@npm:^0.9.0": + version: 0.9.0 + resolution: "js-sha256@npm:0.9.0" + checksum: 10c0/f20b9245f6ebe666f42ca05536f777301132fb1aa7fbc22f10578fa302717a6cca507344894efdeaf40a011256eb2f7d517b94ac7105bd5cf087fa61551ad634 + languageName: node + linkType: hard + +"js-sha3@npm:0.8.0": + version: 0.8.0 + resolution: "js-sha3@npm:0.8.0" + checksum: 10c0/43a21dc7967c871bd2c46cb1c2ae97441a97169f324e509f382d43330d8f75cf2c96dba7c806ab08a425765a9c847efdd4bffbac2d99c3a4f3de6c0218f40533 + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + +"js2xmlparser@npm:^4.0.2": + version: 4.0.2 + resolution: "js2xmlparser@npm:4.0.2" + dependencies: + xmlcreate: "npm:^2.0.4" + checksum: 10c0/b00de9351649d67d225e21734a08f456a4ecb3c29cafcd3bbecb36a8ab61ec841fad7f425bed50e21936fe387f472e49cfe75ce71d0beaacb0475b077c88ed39 + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jsbn@npm:~0.1.0": + version: 0.1.1 + resolution: "jsbn@npm:0.1.1" + checksum: 10c0/e046e05c59ff880ee4ef68902dbdcb6d2f3c5d60c357d4d68647dc23add556c31c0e5f41bdb7e69e793dd63468bd9e085da3636341048ef577b18f5b713877c0 + languageName: node + linkType: hard + +"jsdoc@npm:4.0.2": + version: 4.0.2 + resolution: "jsdoc@npm:4.0.2" + dependencies: + "@babel/parser": "npm:^7.20.15" + "@jsdoc/salty": "npm:^0.2.1" + "@types/markdown-it": "npm:^12.2.3" + bluebird: "npm:^3.7.2" + catharsis: "npm:^0.9.0" + escape-string-regexp: "npm:^2.0.0" + js2xmlparser: "npm:^4.0.2" + klaw: "npm:^3.0.0" + markdown-it: "npm:^12.3.2" + markdown-it-anchor: "npm:^8.4.1" + marked: "npm:^4.0.10" + mkdirp: "npm:^1.0.4" + requizzle: "npm:^0.2.3" + strip-json-comments: "npm:^3.1.0" + underscore: "npm:~1.13.2" + bin: + jsdoc: jsdoc.js + checksum: 10c0/1320a49ea576e60cfe38e5912e0b6aab22e3861a76c1795afde2e02896b29e343abee4da0de6b82f1edb6ef6b6c4fc8e2ef41d0fe65a3522138b28b74b01e5c2 + languageName: node + linkType: hard + +"jsdom@npm:^20.0.0": + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" + dependencies: + abab: "npm:^2.0.6" + acorn: "npm:^8.8.1" + acorn-globals: "npm:^7.0.0" + cssom: "npm:^0.5.0" + cssstyle: "npm:^2.3.0" + data-urls: "npm:^3.0.2" + decimal.js: "npm:^10.4.2" + domexception: "npm:^4.0.0" + escodegen: "npm:^2.0.0" + form-data: "npm:^4.0.0" + html-encoding-sniffer: "npm:^3.0.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.1" + is-potential-custom-element-name: "npm:^1.0.1" + nwsapi: "npm:^2.2.2" + parse5: "npm:^7.1.1" + saxes: "npm:^6.0.0" + symbol-tree: "npm:^3.2.4" + tough-cookie: "npm:^4.1.2" + w3c-xmlserializer: "npm:^4.0.0" + webidl-conversions: "npm:^7.0.0" + whatwg-encoding: "npm:^2.0.0" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + ws: "npm:^8.11.0" + xml-name-validator: "npm:^4.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/b109073bb826a966db7828f46cb1d7371abecd30f182b143c52be5fe1ed84513bbbe995eb3d157241681fcd18331381e61e3dc004d4949f3a63bca02f6214902 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-better-errors@npm:^1.0.1": + version: 1.0.2 + resolution: "json-parse-better-errors@npm:1.0.2" + checksum: 10c0/2f1287a7c833e397c9ddd361a78638e828fc523038bb3441fd4fc144cfd2c6cd4963ffb9e207e648cf7b692600f1e1e524e965c32df5152120910e4903a47dcb + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^3.0.0": + version: 3.0.2 + resolution: "json-parse-even-better-errors@npm:3.0.2" + checksum: 10c0/147f12b005768abe9fab78d2521ce2b7e1381a118413d634a40e6d907d7d10f5e9a05e47141e96d6853af7cc36d2c834d0a014251be48791e037ff2f13d2b94b + languageName: node + linkType: hard + +"json-rpc-engine@npm:^6.1.0": + version: 6.1.0 + resolution: "json-rpc-engine@npm:6.1.0" + dependencies: + "@metamask/safe-event-emitter": "npm:^2.0.0" + eth-rpc-errors: "npm:^4.0.2" + checksum: 10c0/29c480f88152b1987ab0f58f9242ee163d5a7e95cd0d8ae876c08b21657022b82f6008f5eecd048842fb7f6fc3b4e364fde99ca620458772b6abd1d2c1e020d5 + languageName: node + linkType: hard + +"json-rpc-random-id@npm:^1.0.0, json-rpc-random-id@npm:^1.0.1": + version: 1.0.1 + resolution: "json-rpc-random-id@npm:1.0.1" + checksum: 10c0/8d4594a3d4ef5f4754336e350291a6677fc6e0d8801ecbb2a1e92e50ca04a4b57e5eb97168a4b2a8e6888462133cbfee13ea90abc008fb2f7279392d83d3ee7a + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + languageName: node + linkType: hard + +"json-schema@npm:0.4.0": + version: 0.4.0 + resolution: "json-schema@npm:0.4.0" + checksum: 10c0/d4a637ec1d83544857c1c163232f3da46912e971d5bf054ba44fdb88f07d8d359a462b4aec46f2745efbc57053365608d88bc1d7b1729f7b4fc3369765639ed3 + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json-stringify-nice@npm:^1.1.4": + version: 1.1.4 + resolution: "json-stringify-nice@npm:1.1.4" + checksum: 10c0/13673b67ba9e7fde75a103cade0b0d2dd0d21cd3b918de8d8f6cd59d48ad8c78b0e85f6f4a5842073ddfc91ebdde5ef7c81c7f51945b96a33eaddc5d41324b87 + languageName: node + linkType: hard + +"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 + languageName: node + linkType: hard + +"json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: "npm:^1.2.0" + bin: + json5: lib/cli.js + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + languageName: node + linkType: hard + +"json5@npm:^2.1.2, json5@npm:^2.1.3, json5@npm:^2.2.0, json5@npm:^2.2.1, json5@npm:^2.2.2, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonc-parser@npm:3.2.0": + version: 3.2.0 + resolution: "jsonc-parser@npm:3.2.0" + checksum: 10c0/5a12d4d04dad381852476872a29dcee03a57439574e4181d91dca71904fcdcc5e8e4706c0a68a2c61ad9810e1e1c5806b5100d52d3e727b78f5cdc595401045b + languageName: node + linkType: hard + +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: "npm:^4.1.6" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480 + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + languageName: node + linkType: hard + +"jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": + version: 1.3.1 + resolution: "jsonparse@npm:1.3.1" + checksum: 10c0/89bc68080cd0a0e276d4b5ab1b79cacd68f562467008d176dc23e16e97d4efec9e21741d92ba5087a8433526a45a7e6a9d5ef25408696c402ca1cfbc01a90bf0 + languageName: node + linkType: hard + +"jsonpointer@npm:^5.0.0": + version: 5.0.1 + resolution: "jsonpointer@npm:5.0.1" + checksum: 10c0/89929e58b400fcb96928c0504fcf4fc3f919d81e9543ceb055df125538470ee25290bb4984251e172e6ef8fcc55761eb998c118da763a82051ad89d4cb073fe7 + languageName: node + linkType: hard + +"jspm@npm:3.1.0": + version: 3.1.0 + resolution: "jspm@npm:3.1.0" + dependencies: + "@jspm/generator": "npm:^1.1.10" + cac: "npm:^6.7.14" + ora: "npm:^6.3.0" + picocolors: "npm:^1.0.0" + rollup: "npm:^3.29.2" + bin: + jspm: jspm.js + checksum: 10c0/6198a9f5f77f561660efc145504665edae69da70e36a36efd01ad224a449190454ac8166779753efc2e1bcce775074fc2b3edf4caa9a759896268c720a34a531 + languageName: node + linkType: hard + +"jsprim@npm:^2.0.2": + version: 2.0.2 + resolution: "jsprim@npm:2.0.2" + dependencies: + assert-plus: "npm:1.0.0" + extsprintf: "npm:1.3.0" + json-schema: "npm:0.4.0" + verror: "npm:1.10.0" + checksum: 10c0/677be2d41df536c92c6d0114a492ef197084018cfbb1a3e10b1fa1aad889564b2e3a7baa6af7949cc2d73678f42368b0be165a26bd4e4de6883a30dd6a24e98d + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.2, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + languageName: node + linkType: hard + +"just-diff-apply@npm:^5.2.0": + version: 5.5.0 + resolution: "just-diff-apply@npm:5.5.0" + checksum: 10c0/d7b85371f2a5a17a108467fda35dddd95264ab438ccec7837b67af5913c57ded7246039d1df2b5bc1ade034ccf815b56d69786c5f1e07383168a066007c796c0 + languageName: node + linkType: hard + +"just-diff@npm:^5.0.1": + version: 5.2.0 + resolution: "just-diff@npm:5.2.0" + checksum: 10c0/a9d0ebc789f70f5200a022059de057a49b7f1a63179f691b79da13c82c3973d58b7f18e5b30ee0874f79ca53d5e9bdff8f089dff6de4c5f7def10a1c1cc5200e + languageName: node + linkType: hard + +"jwt-decode@npm:^3.1.2": + version: 3.1.2 + resolution: "jwt-decode@npm:3.1.2" + checksum: 10c0/a951547946b5e8b1d9df818152d6b1dbaf13eebb3a6e6daceedf888968f5d255959852c8188aae2c825dc9104a99d25cb6c23f25d76545d1aa0315b968b6912e + languageName: node + linkType: hard + +"jwt-simple@npm:0.5.6": + version: 0.5.6 + resolution: "jwt-simple@npm:0.5.6" + checksum: 10c0/206f5e83e1300f1f1bc3ec9718dfd7d594411c572d15b1fe8249adceac84e3c6bdb88b85355b78a446be83fd3dc545f82fbfa80859d8923d8fee4050b3e0cfeb + languageName: node + linkType: hard + +"karma-source-map-support@npm:1.4.0": + version: 1.4.0 + resolution: "karma-source-map-support@npm:1.4.0" + dependencies: + source-map-support: "npm:^0.5.5" + checksum: 10c0/76085abfa85858e471621386a96842d03b3ae0ff12a997b47a7f51f3e38cd9934792f23cd4bdfb14f49323367a4154ccf8f45c7cbbff88bedd3e1d2580d21ae6 + languageName: node + linkType: hard + +"keccak@npm:^3.0.3": + version: 3.0.4 + resolution: "keccak@npm:3.0.4" + dependencies: + node-addon-api: "npm:^2.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/153525c1c1f770beadb8f8897dec2f1d2dcbee11d063fe5f61957a5b236bfd3d2a111ae2727e443aa6a848df5edb98b9ef237c78d56df49087b0ca8a232ca9cd + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"keyvaluestorage-interface@npm:^1.0.0": + version: 1.0.0 + resolution: "keyvaluestorage-interface@npm:1.0.0" + checksum: 10c0/0e028ebeda79a4e48c7e36708dbe7ced233c7a1f1bc925e506f150dd2ce43178bee8d20361c445bd915569709d9dc9ea80063b4d3c3cf5d615ab43aa31d3ec3d + languageName: node + linkType: hard + +"kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + languageName: node + linkType: hard + +"klaw@npm:^3.0.0": + version: 3.0.0 + resolution: "klaw@npm:3.0.0" + dependencies: + graceful-fs: "npm:^4.1.9" + checksum: 10c0/8391cf6df6337dce02e44628b620b39412d007eff162d907d37063c23986041d9b5c3558851d473c2fae92c1ccb0fde8864e36f9c55ac339fc469b517a2caa1b + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + languageName: node + linkType: hard + +"klona@npm:^2.0.4, klona@npm:^2.0.5, klona@npm:^2.0.6": + version: 2.0.6 + resolution: "klona@npm:2.0.6" + checksum: 10c0/94eed2c6c2ce99f409df9186a96340558897b3e62a85afdc1ee39103954d2ebe1c1c4e9fe2b0952771771fa96d70055ede8b27962a7021406374fdb695fd4d01 + languageName: node + linkType: hard + +"language-subtag-registry@npm:^0.3.20": + version: 0.3.23 + resolution: "language-subtag-registry@npm:0.3.23" + checksum: 10c0/e9b05190421d2cd36dd6c95c28673019c927947cb6d94f40ba7e77a838629ee9675c94accf897fbebb07923187deb843b8fbb8935762df6edafe6c28dcb0b86c + languageName: node + linkType: hard + +"language-tags@npm:^1.0.5, language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" + dependencies: + language-subtag-registry: "npm:^0.3.20" + checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff + languageName: node + linkType: hard + +"launch-editor@npm:^2.6.0": + version: 2.9.1 + resolution: "launch-editor@npm:2.9.1" + dependencies: + picocolors: "npm:^1.0.0" + shell-quote: "npm:^1.8.1" + checksum: 10c0/891f1d136ed8e4ea12e16c196a0d2e07f23c7b983e3ab532b2be1775fb244909581507cce97c50f9d5ca92680b53e4a75c72ddcf20184aa6c4da6ebbe87703f5 + languageName: node + linkType: hard + +"lazy-ass@npm:^1.6.0": + version: 1.6.0 + resolution: "lazy-ass@npm:1.6.0" + checksum: 10c0/4af6cb9a333fbc811268c745f9173fba0f99ecb817cc9c0fae5dbf986b797b730ff525504128f6623b91aba32b02124553a34b0d14de3762b637b74d7233f3bd + languageName: node + linkType: hard + +"less-loader@npm:11.1.0": + version: 11.1.0 + resolution: "less-loader@npm:11.1.0" + dependencies: + klona: "npm:^2.0.4" + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + checksum: 10c0/f80517c422e17f04e74b0bbf27cd431af2b7fa0dbd05c00f8ffdcd3243379ba2814e1da144281395e5f5fefa0d4da81150713de307829648cbad0ce610728e86 + languageName: node + linkType: hard + +"less@npm:4.1.3": + version: 4.1.3 + resolution: "less@npm:4.1.3" + dependencies: + copy-anything: "npm:^2.0.1" + errno: "npm:^0.1.1" + graceful-fs: "npm:^4.1.2" + image-size: "npm:~0.5.0" + make-dir: "npm:^2.1.0" + mime: "npm:^1.4.1" + needle: "npm:^3.1.0" + parse-node-version: "npm:^1.0.1" + source-map: "npm:~0.6.0" + tslib: "npm:^2.3.0" + dependenciesMeta: + errno: + optional: true + graceful-fs: + optional: true + image-size: + optional: true + make-dir: + optional: true + mime: + optional: true + needle: + optional: true + source-map: + optional: true + bin: + lessc: bin/lessc + checksum: 10c0/d67ca673a2c409a3069bb088c21976fa6a22eaf4428a23f486afa3ca57c2c004f424e7466dfc8d38a4dca25bc7b75943de5e3394d3a7841d8812cec696790e22 + languageName: node + linkType: hard + +"level-blobs@npm:^0.1.7": + version: 0.1.7 + resolution: "level-blobs@npm:0.1.7" + dependencies: + level-peek: "npm:1.0.6" + once: "npm:^1.3.0" + readable-stream: "npm:^1.0.26-4" + checksum: 10c0/b4d2e8c22d7080b697132d8e65a8323537d24103175d26da8cf8f2849a0404b8044c85f4845f93307815a0e7112accae71ea084b97aaf507693b2153f8430528 + languageName: node + linkType: hard + +"level-filesystem@npm:^1.0.1": + version: 1.2.0 + resolution: "level-filesystem@npm:1.2.0" + dependencies: + concat-stream: "npm:^1.4.4" + errno: "npm:^0.1.1" + fwd-stream: "npm:^1.0.4" + level-blobs: "npm:^0.1.7" + level-peek: "npm:^1.0.6" + level-sublevel: "npm:^5.2.0" + octal: "npm:^1.0.0" + once: "npm:^1.3.0" + xtend: "npm:^2.2.0" + checksum: 10c0/f0728afcf31ec1b519a25524db650883d22a62404665db915819a2884b6636827e68d163a31e3f74dd8f97fa222aaf302dfb2684ad2340083ac43c47263b6514 + languageName: node + linkType: hard + +"level-fix-range@npm:2.0": + version: 2.0.0 + resolution: "level-fix-range@npm:2.0.0" + dependencies: + clone: "npm:~0.1.9" + checksum: 10c0/fbcc661fb2254bdd9b120fc06538df92523dd32d0fc5926333307ce8a9022b91132f884949077dfa12cd18d71b935dd5db3195b5267f2a260b4f222f32179a1e + languageName: node + linkType: hard + +"level-fix-range@npm:~1.0.2": + version: 1.0.2 + resolution: "level-fix-range@npm:1.0.2" + checksum: 10c0/3d3cbf21ad47ac0d4d3bd51bc5a96f6460b59859adbc36fcfaff4e2eceac0f2fb1a4a9220f0c20719316d095c62b00c677f743bf7cebed5bcd3ef6d55b55c18f + languageName: node + linkType: hard + +"level-hooks@npm:>=4.4.0 <5": + version: 4.5.0 + resolution: "level-hooks@npm:4.5.0" + dependencies: + string-range: "npm:~1.2" + checksum: 10c0/2948be4e7d97d5acd328c4257c7d24b9df1023ed294f1700e4a3c6252f30283150fdd008078b73727bb7e7f864b2b3eb407e3e60976ed60c2ae24480300e5cb8 + languageName: node + linkType: hard + +"level-js@npm:^2.1.3": + version: 2.2.4 + resolution: "level-js@npm:2.2.4" + dependencies: + abstract-leveldown: "npm:~0.12.0" + idb-wrapper: "npm:^1.5.0" + isbuffer: "npm:~0.0.0" + ltgt: "npm:^2.1.2" + typedarray-to-buffer: "npm:~1.0.0" + xtend: "npm:~2.1.2" + checksum: 10c0/47d3e197ed83085d36874396f3e6124a85c03442bb1ce578f05bd062fb6690edb5027244c2a913246d57b46ab31e4dda9cdc42b386b8a3482592a8324b4a6056 + languageName: node + linkType: hard + +"level-peek@npm:1.0.6, level-peek@npm:^1.0.6": + version: 1.0.6 + resolution: "level-peek@npm:1.0.6" + dependencies: + level-fix-range: "npm:~1.0.2" + checksum: 10c0/6be1708439c9f271fb097204886f16339b3096f5b344118edb22e27e2a795cf833ef99c2d546fc0ad49bc04ceec295af6d4352cc3ba37543961c221daea31328 + languageName: node + linkType: hard + +"level-sublevel@npm:^5.2.0": + version: 5.2.3 + resolution: "level-sublevel@npm:5.2.3" + dependencies: + level-fix-range: "npm:2.0" + level-hooks: "npm:>=4.4.0 <5" + string-range: "npm:~1.2.1" + xtend: "npm:~2.0.4" + checksum: 10c0/4d88d89bb35b733d3c2171b33e206b47d1c9557c5983bf81f093c3161192e640e6f3b15eb843ddeea6bbaf6dd20a0355b380fcc6ec2e6c76550858ee6d3c531e + languageName: node + linkType: hard + +"levelup@npm:^0.18.2": + version: 0.18.6 + resolution: "levelup@npm:0.18.6" + dependencies: + bl: "npm:~0.8.1" + deferred-leveldown: "npm:~0.2.0" + errno: "npm:~0.1.1" + prr: "npm:~0.0.0" + readable-stream: "npm:~1.0.26" + semver: "npm:~2.3.1" + xtend: "npm:~3.0.0" + checksum: 10c0/ea6e58f0cac5103f5077e2d9b40a7917b589c622ff7f7d1a58504cce8de30b2904783b2b03bb5e0417fb5556d7228439cfc1f2b3fbbcabd0968df0a074424149 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"libnpmaccess@npm:^6.0.4": + version: 6.0.4 + resolution: "libnpmaccess@npm:6.0.4" + dependencies: + aproba: "npm:^2.0.0" + minipass: "npm:^3.1.1" + npm-package-arg: "npm:^9.0.1" + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/d7cee5ae92369a1ac6fb141082b929c853b3b6a140d9878e52ee93abca644fe052e7b5dfc3ac14c4b2f0c0945bd8bf6d5ccff608be8d8928d812df4af28cb43b + languageName: node + linkType: hard + +"libnpmdiff@npm:^4.0.5": + version: 4.0.5 + resolution: "libnpmdiff@npm:4.0.5" + dependencies: + "@npmcli/disparity-colors": "npm:^2.0.0" + "@npmcli/installed-package-contents": "npm:^1.0.7" + binary-extensions: "npm:^2.2.0" + diff: "npm:^5.1.0" + minimatch: "npm:^5.0.1" + npm-package-arg: "npm:^9.0.1" + pacote: "npm:^13.6.1" + tar: "npm:^6.1.0" + checksum: 10c0/421d92ce61bfdfa5d9f04a35974d1363525ffaa4a92df6ce9cec46788e5f4e52283137f77e22e3280eb79f52c3b9cdb587ffbbc640012a95d7369abae77a51a1 + languageName: node + linkType: hard + +"libnpmexec@npm:^4.0.14": + version: 4.0.14 + resolution: "libnpmexec@npm:4.0.14" + dependencies: + "@npmcli/arborist": "npm:^5.6.3" + "@npmcli/ci-detect": "npm:^2.0.0" + "@npmcli/fs": "npm:^2.1.1" + "@npmcli/run-script": "npm:^4.2.0" + chalk: "npm:^4.1.0" + mkdirp-infer-owner: "npm:^2.0.0" + npm-package-arg: "npm:^9.0.1" + npmlog: "npm:^6.0.2" + pacote: "npm:^13.6.1" + proc-log: "npm:^2.0.0" + read: "npm:^1.0.7" + read-package-json-fast: "npm:^2.0.2" + semver: "npm:^7.3.7" + walk-up-path: "npm:^1.0.0" + checksum: 10c0/d5897a873b0755053111978e33944ff6f90682a615fa227043c7e2a10210fce521701d9cce69010ff5609479defaf97f410329a026ba1eed40210ee41d309572 + languageName: node + linkType: hard + +"libnpmfund@npm:^3.0.5": + version: 3.0.5 + resolution: "libnpmfund@npm:3.0.5" + dependencies: + "@npmcli/arborist": "npm:^5.6.3" + checksum: 10c0/8977a4db55d37d991598aaf9507d34cc994aa5b783e2d2f0c2f75ba8fdcded5a81e195fbb77e914de6d577e55f17678c974442e8e559652869b76a02d84283a1 + languageName: node + linkType: hard + +"libnpmhook@npm:^8.0.4": + version: 8.0.4 + resolution: "libnpmhook@npm:8.0.4" + dependencies: + aproba: "npm:^2.0.0" + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/64e0fe39053e6bf30c69937f19c06cf555c28eb30539d7caee5db860e85f18d2e4d874235696e1a2b23c9c3e04696bf1afe140a49302aa98a37b0b6c0772fe8b + languageName: node + linkType: hard + +"libnpmorg@npm:^4.0.4": + version: 4.0.4 + resolution: "libnpmorg@npm:4.0.4" + dependencies: + aproba: "npm:^2.0.0" + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/aa6c760efe87183d217af0595dbd992374d33eab94f4bb2ab6548b6dc41d9a986c4d4f93e8fcfab4d9c18640c7ffed73a4219b629f207367f9e1f7fa7140fe0b + languageName: node + linkType: hard + +"libnpmpack@npm:^4.1.3": + version: 4.1.3 + resolution: "libnpmpack@npm:4.1.3" + dependencies: + "@npmcli/run-script": "npm:^4.1.3" + npm-package-arg: "npm:^9.0.1" + pacote: "npm:^13.6.1" + checksum: 10c0/628341371bfb556b8e4649b11be63fe1c11dec85fe5d3018d9cda87cc5f274b6fd4df2751d6b651c8e3cfffb03f055e2e1811c41d94022bd28833236f03479cd + languageName: node + linkType: hard + +"libnpmpublish@npm:^6.0.5": + version: 6.0.5 + resolution: "libnpmpublish@npm:6.0.5" + dependencies: + normalize-package-data: "npm:^4.0.0" + npm-package-arg: "npm:^9.0.1" + npm-registry-fetch: "npm:^13.0.0" + semver: "npm:^7.3.7" + ssri: "npm:^9.0.0" + checksum: 10c0/b6238933d792a73a52ddb262aea07a09221dceeaefeb7340f1443d9ab7b2a6997ea8ef5267daaa5c15b1c3be6b7b730cc816f8bf3076a6b346e0a46546828f44 + languageName: node + linkType: hard + +"libnpmsearch@npm:^5.0.4": + version: 5.0.4 + resolution: "libnpmsearch@npm:5.0.4" + dependencies: + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/21e0e24c571f91a7e3c1f2d4441bdf611dae6f161ca22aea1623bc90582d0d93b9307903facc0eee1758635da2f5b1f274ebd98db68e9ea3054ca8fc8ab2ffe8 + languageName: node + linkType: hard + +"libnpmteam@npm:^4.0.4": + version: 4.0.4 + resolution: "libnpmteam@npm:4.0.4" + dependencies: + aproba: "npm:^2.0.0" + npm-registry-fetch: "npm:^13.0.0" + checksum: 10c0/ae7311de69936141b8e5b5932aca3bce6eada88b1ef5c5fec12391a26750ccd83e70cffb1cfa7c87d91bfc346d89ce975bfbe4648c3ddc693d3e9a641780537a + languageName: node + linkType: hard + +"libnpmversion@npm:^3.0.7": + version: 3.0.7 + resolution: "libnpmversion@npm:3.0.7" + dependencies: + "@npmcli/git": "npm:^3.0.0" + "@npmcli/run-script": "npm:^4.1.3" + json-parse-even-better-errors: "npm:^2.3.1" + proc-log: "npm:^2.0.0" + semver: "npm:^7.3.7" + checksum: 10c0/07620887a240b4466ce1d7faf967ab5571da0e705c7b87b3aac4581defc9ab1c839e02bee6c1d413321f83b59910f78d770e9b5163e0450799d9eb24ce6e6174 + languageName: node + linkType: hard + +"license-webpack-plugin@npm:4.0.2, license-webpack-plugin@npm:^4.0.2": + version: 4.0.2 + resolution: "license-webpack-plugin@npm:4.0.2" + dependencies: + webpack-sources: "npm:^3.0.0" + peerDependenciesMeta: + webpack: + optional: true + webpack-sources: + optional: true + checksum: 10c0/6014492b22c5f28a4d367057b5b2c1214b83c73785157fea130d5b877b50ed8820d8d8e73e96b3437c455b5b5c6817b36837da093239f95b534be43c0cdcfedc + languageName: node + linkType: hard + +"lightningcss-darwin-arm64@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-darwin-arm64@npm:1.27.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-x64@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-darwin-x64@npm:1.27.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-freebsd-x64@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-freebsd-x64@npm:1.27.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-linux-arm-gnueabihf@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.27.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"lightningcss-linux-arm64-gnu@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-linux-arm64-gnu@npm:1.27.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-arm64-musl@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-linux-arm64-musl@npm:1.27.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-linux-x64-gnu@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-linux-x64-gnu@npm:1.27.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-x64-musl@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-linux-x64-musl@npm:1.27.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-win32-arm64-msvc@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-win32-arm64-msvc@npm:1.27.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-win32-x64-msvc@npm:1.27.0": + version: 1.27.0 + resolution: "lightningcss-win32-x64-msvc@npm:1.27.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"lightningcss@npm:^1.22.1": + version: 1.27.0 + resolution: "lightningcss@npm:1.27.0" + dependencies: + detect-libc: "npm:^1.0.3" + lightningcss-darwin-arm64: "npm:1.27.0" + lightningcss-darwin-x64: "npm:1.27.0" + lightningcss-freebsd-x64: "npm:1.27.0" + lightningcss-linux-arm-gnueabihf: "npm:1.27.0" + lightningcss-linux-arm64-gnu: "npm:1.27.0" + lightningcss-linux-arm64-musl: "npm:1.27.0" + lightningcss-linux-x64-gnu: "npm:1.27.0" + lightningcss-linux-x64-musl: "npm:1.27.0" + lightningcss-win32-arm64-msvc: "npm:1.27.0" + lightningcss-win32-x64-msvc: "npm:1.27.0" + dependenciesMeta: + lightningcss-darwin-arm64: + optional: true + lightningcss-darwin-x64: + optional: true + lightningcss-freebsd-x64: + optional: true + lightningcss-linux-arm-gnueabihf: + optional: true + lightningcss-linux-arm64-gnu: + optional: true + lightningcss-linux-arm64-musl: + optional: true + lightningcss-linux-x64-gnu: + optional: true + lightningcss-linux-x64-musl: + optional: true + lightningcss-win32-arm64-msvc: + optional: true + lightningcss-win32-x64-msvc: + optional: true + checksum: 10c0/5292b277ebbefdd952cb7b9ccd20dd2c185a7eae9b4393960386b7b8c4d644492a413a91d05ca9dcb72c775bbb8d79b235a3415d66410c47464039394d022109 + languageName: node + linkType: hard + +"lilconfig@npm:^2.0.3, lilconfig@npm:^2.0.5": + version: 2.1.0 + resolution: "lilconfig@npm:2.1.0" + checksum: 10c0/64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"lines-and-columns@npm:^2.0.3, lines-and-columns@npm:~2.0.3": + version: 2.0.4 + resolution: "lines-and-columns@npm:2.0.4" + checksum: 10c0/4db28bf065cd7ad897c0700f22d3d0d7c5ed6777e138861c601c496d545340df3fc19e18bd04ff8d95a246a245eb55685b82ca2f8c2ca53a008e9c5316250379 + languageName: node + linkType: hard + +"linkify-it@npm:^3.0.1": + version: 3.0.3 + resolution: "linkify-it@npm:3.0.3" + dependencies: + uc.micro: "npm:^1.0.1" + checksum: 10c0/468cb4954f85cdfc16e169db89a42d65287e3f121a9448b29c3c00d64c6f5a8f4367bea3978ba9109a0e3a10b19d50632b983639f91b9be9f20d1f63a5ff5bc1 + languageName: node + linkType: hard + +"listhen@npm:^1.7.2": + version: 1.9.0 + resolution: "listhen@npm:1.9.0" + dependencies: + "@parcel/watcher": "npm:^2.4.1" + "@parcel/watcher-wasm": "npm:^2.4.1" + citty: "npm:^0.1.6" + clipboardy: "npm:^4.0.0" + consola: "npm:^3.2.3" + crossws: "npm:>=0.2.0 <0.4.0" + defu: "npm:^6.1.4" + get-port-please: "npm:^3.1.2" + h3: "npm:^1.12.0" + http-shutdown: "npm:^1.2.2" + jiti: "npm:^2.1.2" + mlly: "npm:^1.7.1" + node-forge: "npm:^1.3.1" + pathe: "npm:^1.1.2" + std-env: "npm:^3.7.0" + ufo: "npm:^1.5.4" + untun: "npm:^0.1.3" + uqr: "npm:^0.1.2" + bin: + listen: bin/listhen.mjs + listhen: bin/listhen.mjs + checksum: 10c0/b13e732eec48a49017121013853bb0f184c6f40dc9839a8ccad03b57a50a29186a57edafe5807e892cf65b49cb710026ba95d064bdcf294e135b95c6553fe36b + languageName: node + linkType: hard + +"listr2@npm:^3.8.3": + version: 3.14.0 + resolution: "listr2@npm:3.14.0" + dependencies: + cli-truncate: "npm:^2.1.0" + colorette: "npm:^2.0.16" + log-update: "npm:^4.0.0" + p-map: "npm:^4.0.0" + rfdc: "npm:^1.3.0" + rxjs: "npm:^7.5.1" + through: "npm:^2.3.8" + wrap-ansi: "npm:^7.0.0" + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 10c0/8301703876ad6bf50cd769e9c1169c2aa435951d69d4f54fc202a13c1b6006a9b3afbcf9842440eb22f08beec4d311d365e31d4ed2e0fcabf198d8085b06a421 + languageName: node + linkType: hard + +"lit-element@npm:^3.3.0": + version: 3.3.3 + resolution: "lit-element@npm:3.3.3" + dependencies: + "@lit-labs/ssr-dom-shim": "npm:^1.1.0" + "@lit/reactive-element": "npm:^1.3.0" + lit-html: "npm:^2.8.0" + checksum: 10c0/f44c12fa3423a4e9ca5b84651410687e14646bb270ac258325e6905affac64a575f041f8440377e7ebaefa3910b6f0d6b8b1e902cb1aa5d0849b3fdfbf4fb3b6 + languageName: node + linkType: hard + +"lit-element@npm:^4.0.0": + version: 4.1.0 + resolution: "lit-element@npm:4.1.0" + dependencies: + "@lit-labs/ssr-dom-shim": "npm:^1.2.0" + "@lit/reactive-element": "npm:^2.0.4" + lit-html: "npm:^3.2.0" + checksum: 10c0/0394b1fda00495754d505fc63993221bd65195dab8fb2888ce3e088ad97b5ba457a0993b871a92bfafe17c0d8cfb7c190bce22ea191e1d0b47b6ee9991cc617d + languageName: node + linkType: hard + +"lit-html@npm:^2.8.0": + version: 2.8.0 + resolution: "lit-html@npm:2.8.0" + dependencies: + "@types/trusted-types": "npm:^2.0.2" + checksum: 10c0/90057dee050803823ac884c1355b0213ab8c05fbe2ec63943c694b61aade5d36272068f3925f45a312835e504f9c9784738ef797009f0a756a750351eafb52d5 + languageName: node + linkType: hard + +"lit-html@npm:^3.1.0, lit-html@npm:^3.2.0": + version: 3.2.0 + resolution: "lit-html@npm:3.2.0" + dependencies: + "@types/trusted-types": "npm:^2.0.2" + checksum: 10c0/cc0d58fc581d0d838361b3e46a34113ec458822c6600e6eb8dac9a671e4d983c0d34af07a1b3b60cc257e91b7e87760044779328f14d46742915d2c46fe68688 + languageName: node + linkType: hard + +"lit@npm:2.8.0": + version: 2.8.0 + resolution: "lit@npm:2.8.0" + dependencies: + "@lit/reactive-element": "npm:^1.6.0" + lit-element: "npm:^3.3.0" + lit-html: "npm:^2.8.0" + checksum: 10c0/bf33c26b1937ee204aed1adbfa4b3d43a284e85aad8ea9763c7865365917426eded4e5888158b4136095ea42054812561fe272862b61775f1198fad3588b071f + languageName: node + linkType: hard + +"lit@npm:3.1.0": + version: 3.1.0 + resolution: "lit@npm:3.1.0" + dependencies: + "@lit/reactive-element": "npm:^2.0.0" + lit-element: "npm:^4.0.0" + lit-html: "npm:^3.1.0" + checksum: 10c0/7ca12c1b1593373d16b51b2220677d8936b4061de4f278ef2a85f15726bb4365a8eed89a0294816a10d6124dca81f02e83b5dfed9a6031e135a7bc68924eea6b + languageName: node + linkType: hard + +"lmdb@npm:2.8.5": + version: 2.8.5 + resolution: "lmdb@npm:2.8.5" + dependencies: + "@lmdb/lmdb-darwin-arm64": "npm:2.8.5" + "@lmdb/lmdb-darwin-x64": "npm:2.8.5" + "@lmdb/lmdb-linux-arm": "npm:2.8.5" + "@lmdb/lmdb-linux-arm64": "npm:2.8.5" + "@lmdb/lmdb-linux-x64": "npm:2.8.5" + "@lmdb/lmdb-win32-x64": "npm:2.8.5" + msgpackr: "npm:^1.9.5" + node-addon-api: "npm:^6.1.0" + node-gyp: "npm:latest" + node-gyp-build-optional-packages: "npm:5.1.1" + ordered-binary: "npm:^1.4.1" + weak-lru-cache: "npm:^1.2.2" + dependenciesMeta: + "@lmdb/lmdb-darwin-arm64": + optional: true + "@lmdb/lmdb-darwin-x64": + optional: true + "@lmdb/lmdb-linux-arm": + optional: true + "@lmdb/lmdb-linux-arm64": + optional: true + "@lmdb/lmdb-linux-x64": + optional: true + "@lmdb/lmdb-win32-x64": + optional: true + bin: + download-lmdb-prebuilds: bin/download-prebuilds.js + checksum: 10c0/5c95ae636611f32d3583b26bca0d4b0dc236378f785b5735420edda62f88ddacc17c7586d586779a49f3377422c85c3e0b416c4a47f1c21945f76f001551afc9 + languageName: node + linkType: hard + +"load-json-file@npm:^4.0.0": + version: 4.0.0 + resolution: "load-json-file@npm:4.0.0" + dependencies: + graceful-fs: "npm:^4.1.2" + parse-json: "npm:^4.0.0" + pify: "npm:^3.0.0" + strip-bom: "npm:^3.0.0" + checksum: 10c0/6b48f6a0256bdfcc8970be2c57f68f10acb2ee7e63709b386b2febb6ad3c86198f840889cdbe71d28f741cbaa2f23a7771206b138cd1bdd159564511ca37c1d5 + languageName: node + linkType: hard + +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: 10c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 + languageName: node + linkType: hard + +"loader-utils@npm:3.2.1": + version: 3.2.1 + resolution: "loader-utils@npm:3.2.1" + checksum: 10c0/d3e1f217d160e8e894a0385a33500d4ce14065e8ffb250f5a81ae65bc2c3baa50625ec34182ba4417b46b4ac6725aed64429e1104d6401e074af2aa1dd018394 + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.3": + version: 2.0.4 + resolution: "loader-utils@npm:2.0.4" + dependencies: + big.js: "npm:^5.2.2" + emojis-list: "npm:^3.0.0" + json5: "npm:^2.1.2" + checksum: 10c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 + languageName: node + linkType: hard + +"loader-utils@npm:^3.2.0": + version: 3.3.1 + resolution: "loader-utils@npm:3.3.1" + checksum: 10c0/f2af4eb185ac5bf7e56e1337b666f90744e9f443861ac521b48f093fb9e8347f191c8960b4388a3365147d218913bc23421234e7788db69f385bacfefa0b4758 + languageName: node + linkType: hard + +"locate-path@npm:^2.0.0": + version: 2.0.0 + resolution: "locate-path@npm:2.0.0" + dependencies: + p-locate: "npm:^2.0.0" + path-exists: "npm:^3.0.0" + checksum: 10c0/24efa0e589be6aa3c469b502f795126b26ab97afa378846cb508174211515633b770aa0ba610cab113caedab8d2a4902b061a08aaed5297c12ab6f5be4df0133 + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: "npm:^6.0.0" + checksum: 10c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 + languageName: node + linkType: hard + +"lodash.capitalize@npm:^4.2.1": + version: 4.2.1 + resolution: "lodash.capitalize@npm:4.2.1" + checksum: 10c0/b289326497c2e24d6b8afa2af2ca4e068ef6ef007ade36bfb6f70af77ce10ea3f090eeee947d5fdcf2db4bcfa4703c8c10a5857a2b39e308bddfd1d11ad35970 + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 + languageName: node + linkType: hard + +"lodash.escaperegexp@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.escaperegexp@npm:4.1.2" + checksum: 10c0/484ad4067fa9119bb0f7c19a36ab143d0173a081314993fe977bd00cf2a3c6a487ce417a10f6bac598d968364f992153315f0dbe25c9e38e3eb7581dd333e087 + languageName: node + linkType: hard + +"lodash.isequal@npm:4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: 10c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f + languageName: node + linkType: hard + +"lodash.ismatch@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.ismatch@npm:4.4.0" + checksum: 10c0/8f96a5dc4b8d3fc5a033dcb259d0c3148a1044fa4d02b4a0e8dce0fa1f2ef3ec4ac131e20b5cb2c985a4e9bcb1c37c0aa5af2cef70094959389617347b8fc645 + languageName: node + linkType: hard + +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb + languageName: node + linkType: hard + +"lodash.isstring@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.isstring@npm:4.0.1" + checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 + languageName: node + linkType: hard + +"lodash.memoize@npm:4.x, lodash.memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash.once@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.once@npm:4.1.1" + checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 + languageName: node + linkType: hard + +"lodash.uniq@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.uniq@npm:4.5.0" + checksum: 10c0/262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e + languageName: node + linkType: hard + +"lodash.uniqby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.uniqby@npm:4.7.0" + checksum: 10c0/c505c0de20ca759599a2ba38710e8fb95ff2d2028e24d86c901ef2c74be8056518571b9b754bfb75053b2818d30dd02243e4a4621a6940c206bbb3f7626db656 + languageName: node + linkType: hard + +"lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:^4.17.4": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + +"log-symbols@npm:^5.1.0": + version: 5.1.0 + resolution: "log-symbols@npm:5.1.0" + dependencies: + chalk: "npm:^5.0.0" + is-unicode-supported: "npm:^1.1.0" + checksum: 10c0/c14f8567c6618a7f96209c4c4b9fb3b794187116904712f7b526e465a5c9535728aec983735a5bef919247d0e54b9b72b6680a7fb9fc72d76b945dac4865e669 + languageName: node + linkType: hard + +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: "npm:^4.3.0" + cli-cursor: "npm:^3.1.0" + slice-ansi: "npm:^4.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86 + languageName: node + linkType: hard + +"long@npm:^5.0.0": + version: 5.2.3 + resolution: "long@npm:5.2.3" + checksum: 10c0/6a0da658f5ef683b90330b1af76f06790c623e148222da9d75b60e266bbf88f803232dd21464575681638894a84091616e7f89557aa087fd14116c0f4e0e43d9 + languageName: node + linkType: hard + +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + +"lru-cache@npm:^11.0.0": + version: 11.0.1 + resolution: "lru-cache@npm:11.0.1" + checksum: 10c0/8bad6603dc67eb5b03520fba05bce5df6473dbba58ac4c6067ed088d29225a0a04416bb1462acd8c1f819d1fbf37920446a1c36bafd9c384bcc54cee0d3b697a + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + +"lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: 10c0/b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed + languageName: node + linkType: hard + +"lru_map@npm:0.4.1": + version: 0.4.1 + resolution: "lru_map@npm:0.4.1" + checksum: 10c0/8d9d532d29c8d18d09e02e5cb81ddf826fe03411bcb95de9b501956e87f5eb58b7509ac50f8b06f1b4092290bfff042858f03b0daac38f541eb588c3d6c67358 + languageName: node + linkType: hard + +"ltgt@npm:^2.1.2": + version: 2.2.1 + resolution: "ltgt@npm:2.2.1" + checksum: 10c0/60fdad732c3aa6acf37e927a5ef58c0d1776192321d55faa1f8775c134c27fbf20ef8ec542fb7f7f33033f79c2a2df75cac39b43e274b32e9d95400154cd41f3 + languageName: node + linkType: hard + +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" + bin: + lz-string: bin/bin.js + checksum: 10c0/36128e4de34791838abe979b19927c26e67201ca5acf00880377af7d765b38d1c60847e01c5ec61b1a260c48029084ab3893a3925fd6e48a04011364b089991b + languageName: node + linkType: hard + +"magic-string@npm:0.29.0": + version: 0.29.0 + resolution: "magic-string@npm:0.29.0" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.4.13" + checksum: 10c0/6c8b6246bca11e439d35f18b3a27cbdf55226acc7f4489900f027e253b7af6c5cd32ebb275389ef32c05d11f699d7dac8a06b833f51a51faf3d1978b9dabd861 + languageName: node + linkType: hard + +"magic-string@npm:0.30.0": + version: 0.30.0 + resolution: "magic-string@npm:0.30.0" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.4.13" + checksum: 10c0/5fac57cf190bee966d3b5c55e0c23d6148b043a43220de91a369c4a81301b483418712b38440d15055a2ac04beec63dea4866a4e5c84ad6b919186e1c5c61241 + languageName: node + linkType: hard + +"magic-string@npm:^0.25.7": + version: 0.25.9 + resolution: "magic-string@npm:0.25.9" + dependencies: + sourcemap-codec: "npm:^1.4.8" + checksum: 10c0/37f5e01a7e8b19a072091f0b45ff127cda676232d373ce2c551a162dd4053c575ec048b9cbb4587a1f03adb6c5d0fd0dd49e8ab070cd2c83a4992b2182d9cb56 + languageName: node + linkType: hard + +"make-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "make-dir@npm:2.1.0" + dependencies: + pify: "npm:^4.0.1" + semver: "npm:^5.6.0" + checksum: 10c0/ada869944d866229819735bee5548944caef560d7a8536ecbc6536edca28c72add47cc4f6fc39c54fb25d06b58da1f8994cf7d9df7dadea047064749efc085d8 + languageName: node + linkType: hard + +"make-dir@npm:^3.0.2": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" + dependencies: + semver: "npm:^6.0.0" + checksum: 10c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + +"make-error@npm:1.x, make-error@npm:^1.1.1, make-error@npm:^1.3.6": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + +"make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.0.6, make-fetch-happen@npm:^10.2.0": + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" + dependencies: + agentkeepalive: "npm:^4.2.1" + cacache: "npm:^16.1.0" + http-cache-semantics: "npm:^4.1.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.0" + is-lambda: "npm:^1.0.1" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-fetch: "npm:^2.0.3" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + socks-proxy-agent: "npm:^7.0.0" + ssri: "npm:^9.0.0" + checksum: 10c0/28ec392f63ab93511f400839dcee83107eeecfaad737d1e8487ea08b4332cd89a8f3319584222edd9f6f1d0833cf516691469496d46491863f9e88c658013949 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^11.0.0, make-fetch-happen@npm:^11.0.1, make-fetch-happen@npm:^11.1.1": + version: 11.1.1 + resolution: "make-fetch-happen@npm:11.1.1" + dependencies: + agentkeepalive: "npm:^4.2.1" + cacache: "npm:^17.0.0" + http-cache-semantics: "npm:^4.1.1" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.0" + is-lambda: "npm:^1.0.1" + lru-cache: "npm:^7.7.1" + minipass: "npm:^5.0.0" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + socks-proxy-agent: "npm:^7.0.0" + ssri: "npm:^10.0.0" + checksum: 10c0/c161bde51dbc03382f9fac091734526a64dd6878205db6c338f70d2133df797b5b5166bff3091cf7d4785869d4b21e99a58139c1790c2fb1b5eec00f528f5f0b + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + proc-log: "npm:^4.2.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10c0/df5f4dbb6d98153b751bccf4dc4cc500de85a96a9331db9805596c46aa9f99d9555983954e6c1266d9f981ae37a9e4647f42b9a4bb5466f867f4012e582c9e7e + languageName: node + linkType: hard + +"make-fetch-happen@npm:^8.0.14": + version: 8.0.14 + resolution: "make-fetch-happen@npm:8.0.14" + dependencies: + agentkeepalive: "npm:^4.1.3" + cacache: "npm:^15.0.5" + http-cache-semantics: "npm:^4.1.0" + http-proxy-agent: "npm:^4.0.1" + https-proxy-agent: "npm:^5.0.0" + is-lambda: "npm:^1.0.1" + lru-cache: "npm:^6.0.0" + minipass: "npm:^3.1.3" + minipass-collect: "npm:^1.0.2" + minipass-fetch: "npm:^1.3.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + promise-retry: "npm:^2.0.1" + socks-proxy-agent: "npm:^5.0.0" + ssri: "npm:^8.0.0" + checksum: 10c0/d2c9c77fafcd2f1e64b693671e0cf223d1c6befc01a070de4cc2dc41da4bec24d01a9d46879fbc134d0aa7aed5d2cafea7a74ef16bbf77bf81a2b317e182deb6 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + +"map-obj@npm:^1.0.0": + version: 1.0.1 + resolution: "map-obj@npm:1.0.1" + checksum: 10c0/ccca88395e7d38671ed9f5652ecf471ecd546924be2fb900836b9da35e068a96687d96a5f93dcdfa94d9a27d649d2f10a84595590f89a347fb4dda47629dcc52 + languageName: node + linkType: hard + +"map-obj@npm:^4.0.0": + version: 4.3.0 + resolution: "map-obj@npm:4.3.0" + checksum: 10c0/1c19e1c88513c8abdab25c316367154c6a0a6a0f77e3e8c391bb7c0e093aefed293f539d026dc013d86219e5e4c25f23b0003ea588be2101ccd757bacc12d43b + languageName: node + linkType: hard + +"markdown-it-anchor@npm:^8.4.1": + version: 8.6.7 + resolution: "markdown-it-anchor@npm:8.6.7" + peerDependencies: + "@types/markdown-it": "*" + markdown-it: "*" + checksum: 10c0/f117866488013b7e4085a6b59d12bf62879181aef65ea2851f01ed1b763b8c052580c2c27fa8bd009421886220c6beeb373a65af9e885ce63a36ee9f8dcd0e89 + languageName: node + linkType: hard + +"markdown-it@npm:^12.3.2": + version: 12.3.2 + resolution: "markdown-it@npm:12.3.2" + dependencies: + argparse: "npm:^2.0.1" + entities: "npm:~2.1.0" + linkify-it: "npm:^3.0.1" + mdurl: "npm:^1.0.1" + uc.micro: "npm:^1.0.5" + bin: + markdown-it: bin/markdown-it.js + checksum: 10c0/7f97b924e6f90e2c5ccdfb486a19bd7885b938f568a86b527bf6f916a16b01a298e6739f86a99e77acb5e7c020f6c8b34bd726364179b3f820e48b2971a6450c + languageName: node + linkType: hard + +"marked-terminal@npm:^5.0.0": + version: 5.2.0 + resolution: "marked-terminal@npm:5.2.0" + dependencies: + ansi-escapes: "npm:^6.2.0" + cardinal: "npm:^2.1.1" + chalk: "npm:^5.2.0" + cli-table3: "npm:^0.6.3" + node-emoji: "npm:^1.11.0" + supports-hyperlinks: "npm:^2.3.0" + peerDependencies: + marked: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: 10c0/3f10966cf5c7973453442cf2cf8a5479c68c266723af0de9aa6f0687d40dd30b2820de002bb2c737274223c338ef5fcf1215c7f71092ffa35f448f105713b267 + languageName: node + linkType: hard + +"marked@npm:^4.0.10": + version: 4.3.0 + resolution: "marked@npm:4.3.0" + bin: + marked: bin/marked.js + checksum: 10c0/0013463855e31b9c88d8bb2891a611d10ef1dc79f2e3cbff1bf71ba389e04c5971298c886af0be799d7fa9aa4593b086a136062d59f1210b0480b026a8c5dc47 + languageName: node + linkType: hard + +"md5.js@npm:^1.3.4": + version: 1.3.5 + resolution: "md5.js@npm:1.3.5" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 + languageName: node + linkType: hard + +"mdn-data@npm:2.0.14": + version: 2.0.14 + resolution: "mdn-data@npm:2.0.14" + checksum: 10c0/67241f8708c1e665a061d2b042d2d243366e93e5bf1f917693007f6d55111588b952dcbfd3ea9c2d0969fb754aad81b30fdcfdcc24546495fc3b24336b28d4bd + languageName: node + linkType: hard + +"mdurl@npm:^1.0.1": + version: 1.0.1 + resolution: "mdurl@npm:1.0.1" + checksum: 10c0/ea8534341eb002aaa532a722daef6074cd8ca66202e10a2b4cda46722c1ebdb1da92197ac300bc953d3ef1bf41cd6561ef2cc69d82d5d0237dae00d4a61a4eee + languageName: node + linkType: hard + +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 + languageName: node + linkType: hard + +"memfs@npm:^3.4.1, memfs@npm:^3.4.12, memfs@npm:^3.4.3": + version: 3.5.3 + resolution: "memfs@npm:3.5.3" + dependencies: + fs-monkey: "npm:^1.0.4" + checksum: 10c0/038fc81bce17ea92dde15aaa68fa0fdaf4960c721ce3ffc7c2cb87a259333f5159784ea48b3b72bf9e054254d9d0d0d5209d0fdc3d07d08653a09933b168fbd7 + languageName: node + linkType: hard + +"meow@npm:^12.0.1": + version: 12.1.1 + resolution: "meow@npm:12.1.1" + checksum: 10c0/a125ca99a32e2306e2f4cbe651a0d27f6eb67918d43a075f6e80b35e9bf372ebf0fc3a9fbc201cbbc9516444b6265fb3c9f80c5b7ebd32f548aa93eb7c28e088 + languageName: node + linkType: hard + +"meow@npm:^8.0.0": + version: 8.1.2 + resolution: "meow@npm:8.1.2" + dependencies: + "@types/minimist": "npm:^1.2.0" + camelcase-keys: "npm:^6.2.2" + decamelize-keys: "npm:^1.1.0" + hard-rejection: "npm:^2.1.0" + minimist-options: "npm:4.1.0" + normalize-package-data: "npm:^3.0.0" + read-pkg-up: "npm:^7.0.1" + redent: "npm:^3.0.0" + trim-newlines: "npm:^3.0.0" + type-fest: "npm:^0.18.0" + yargs-parser: "npm:^20.2.3" + checksum: 10c0/9a8d90e616f783650728a90f4ea1e5f763c1c5260369e6596b52430f877f4af8ecbaa8c9d952c93bbefd6d5bda4caed6a96a20ba7d27b511d2971909b01922a2 + languageName: node + linkType: hard + +"merge-descriptors@npm:1.0.3": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 + languageName: node + linkType: hard + +"merge-options@npm:^3.0.4": + version: 3.0.4 + resolution: "merge-options@npm:3.0.4" + dependencies: + is-plain-obj: "npm:^2.1.0" + checksum: 10c0/02b5891ceef09b0b497b5a0154c37a71784e68ed71b14748f6fd4258ffd3fe4ecd5cb0fd6f7cae3954fd11e7686c5cb64486daffa63c2793bbe8b614b61c7055 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.2.3, merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 + languageName: node + linkType: hard + +"micro-ftch@npm:^0.3.1": + version: 0.3.1 + resolution: "micro-ftch@npm:0.3.1" + checksum: 10c0/b87d35a52aded13cf2daca8d4eaa84e218722b6f83c75ddd77d74f32cc62e699a672e338e1ee19ceae0de91d19cc24dcc1a7c7d78c81f51042fe55f01b196ed3 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"miller-rabin@npm:^4.0.0": + version: 4.0.1 + resolution: "miller-rabin@npm:4.0.1" + dependencies: + bn.js: "npm:^4.0.0" + brorand: "npm:^1.0.1" + bin: + miller-rabin: bin/miller-rabin + checksum: 10c0/26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-db@npm:>= 1.43.0 < 2": + version: 1.53.0 + resolution: "mime-db@npm:1.53.0" + checksum: 10c0/1dcc37ba8ed5d1c179f5c6f0837e8db19371d5f2ea3690c3c2f3fa8c3858f976851d3460b172b4dee78ebd606762cbb407aa398545fbacd539e519f858cd7bf4 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mime@npm:1.6.0, mime@npm:^1.4.1": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 + languageName: node + linkType: hard + +"mime@npm:^3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf + languageName: node + linkType: hard + +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 10c0/0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 + languageName: node + linkType: hard + +"min-indent@npm:^1.0.0": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c + languageName: node + linkType: hard + +"mini-css-extract-plugin@npm:2.7.6": + version: 2.7.6 + resolution: "mini-css-extract-plugin@npm:2.7.6" + dependencies: + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 + languageName: node + linkType: hard + +"mini-css-extract-plugin@npm:~2.4.7": + version: 2.4.7 + resolution: "mini-css-extract-plugin@npm:2.4.7" + dependencies: + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/35b0995d3eac05ceb3b084d8af0fff4f5ecc5233ae178a94bf66dd14affe73bce4caced1a76ef9736f63cef693d17d73aa0f264c46c384d71dbc21e01913d424 + languageName: node + linkType: hard + +"mini-svg-data-uri@npm:^1.2.3": + version: 1.4.4 + resolution: "mini-svg-data-uri@npm:1.4.4" + bin: + mini-svg-data-uri: cli.js + checksum: 10c0/24545fa30b5a45449241bf19c25b8bc37594b63ec06401b3d563bd1c2e8a6abb7c18741f8b354e0064baa63c291be214154bf3a66f201ae71dfab3cc1a5e3191 + languageName: node + linkType: hard + +"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + languageName: node + linkType: hard + +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 + languageName: node + linkType: hard + +"minimatch@npm:3.0.5": + version: 3.0.5 + resolution: "minimatch@npm:3.0.5" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/f398652d0d260137c289c270a4ac98ebe0a27cd316fa0fac72b096e96cbdc89f71d80d47ac7065c716ba3b0b730783b19180bd85a35f9247535d2adfe96bba76 + languageName: node + linkType: hard + +"minimatch@npm:9.0.3": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + +"minimatch@npm:^10.0.0": + version: 10.0.1 + resolution: "minimatch@npm:10.0.1" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/e6c29a81fe83e1877ad51348306be2e8aeca18c88fdee7a99df44322314279e15799e41d7cb274e4e8bb0b451a3bc622d6182e157dfa1717d6cda75e9cd8cd5d + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + languageName: node + linkType: hard + +"minimatch@npm:^8.0.2": + version: 8.0.4 + resolution: "minimatch@npm:8.0.4" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/a0a394c356dd5b4cb7f821720841a82fa6f07c9c562c5b716909d1b6ec5e56a7e4c4b5029da26dd256b7d2b3a3f38cbf9ddd8680e887b9b5282b09c05501c1ca + languageName: node + linkType: hard + +"minimatch@npm:^9.0.0, minimatch@npm:^9.0.1, minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minimist-options@npm:4.1.0": + version: 4.1.0 + resolution: "minimist-options@npm:4.1.0" + dependencies: + arrify: "npm:^1.0.1" + is-plain-obj: "npm:^1.1.0" + kind-of: "npm:^6.0.3" + checksum: 10c0/7871f9cdd15d1e7374e5b013e2ceda3d327a06a8c7b38ae16d9ef941e07d985e952c589e57213f7aa90a8744c60aed9524c0d85e501f5478382d9181f2763f54 + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^1.3.2": + version: 1.4.1 + resolution: "minipass-fetch@npm:1.4.1" + dependencies: + encoding: "npm:^0.1.12" + minipass: "npm:^3.1.0" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.0.0" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/a43da7401cd7c4f24b993887d41bd37d097356083b0bb836fd655916467463a1e6e9e553b2da4fcbe8745bf23d40c8b884eab20745562199663b3e9060cd8e7a + languageName: node + linkType: hard + +"minipass-fetch@npm:^2.0.3": + version: 2.1.2 + resolution: "minipass-fetch@npm:2.1.2" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^3.1.6" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/33ab2c5bdb3d91b9cb8bc6ae42d7418f4f00f7f7beae14b3bb21ea18f9224e792f560a6e17b6f1be12bbeb70dbe99a269f4204c60e5d99130a0777b153505c43 + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/9d702d57f556274286fdd97e406fc38a2f5c8d15e158b498d7393b1105974b21249289ec571fa2b51e038a4872bfc82710111cf75fae98c662f3d6f95e72152b + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-json-stream@npm:^1.0.1": + version: 1.0.2 + resolution: "minipass-json-stream@npm:1.0.2" + dependencies: + jsonparse: "npm:^1.3.1" + minipass: "npm:^3.0.0" + checksum: 10c0/c2fc0d9719dd445d08de82bb449b51c59c3609a08064dd270da8bc76e4e542f4f354b5b1ef3b6e2f2f5b621b25e21ffbd0f0fa26ba6a80121fc19c3ad0d4db2c + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3, minipass@npm:^3.1.6": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^4.2.4": + version: 4.2.8 + resolution: "minipass@npm:4.2.8" + checksum: 10c0/4ea76b030d97079f4429d6e8a8affd90baf1b6a1898977c8ccce4701c5a2ba2792e033abc6709373f25c2c4d4d95440d9d5e9464b46b7b76ca44d2ce26d939ce + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"mipd@npm:0.0.5": + version: 0.0.5 + resolution: "mipd@npm:0.0.5" + dependencies: + viem: "npm:^1.1.4" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/6b0a82cdc9eec5c12132b46422799cf536b1062b307a6aa0ce57ef240c56bd2dd231a5eda367c8a8962cbff73dd1af6131b8d769e3b47a06f0fc9d148b56f3dd + languageName: node + linkType: hard + +"mipd@npm:0.0.7": + version: 0.0.7 + resolution: "mipd@npm:0.0.7" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/c536e4fcdc15793b4538f72da389f8901a7eccb2e1eb55d8878f234a45f1c271064650e76fa2967b94743e19cc32ceab3c7b1e0dc614e28a45b0bbd6c987795d + languageName: node + linkType: hard + +"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": + version: 0.5.3 + resolution: "mkdirp-classic@npm:0.5.3" + checksum: 10c0/95371d831d196960ddc3833cc6907e6b8f67ac5501a6582f47dfae5eb0f092e9f8ce88e0d83afcae95d6e2b61a01741ba03714eeafb6f7a6e9dcc158ac85b168 + languageName: node + linkType: hard + +"mkdirp-infer-owner@npm:^2.0.0": + version: 2.0.0 + resolution: "mkdirp-infer-owner@npm:2.0.0" + dependencies: + chownr: "npm:^2.0.0" + infer-owner: "npm:^1.0.4" + mkdirp: "npm:^1.0.3" + checksum: 10c0/548356a586b92a16fc90eb62b953e5a23d594b56084ecdf72446f4164bbaa6a3bacd8c140672ad24f10c5f561e16c35ac3d97a5ab422832c5ed5449c72501a03 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4, mkdirp@npm:~1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mlly@npm:^1.7.1": + version: 1.7.1 + resolution: "mlly@npm:1.7.1" + dependencies: + acorn: "npm:^8.11.3" + pathe: "npm:^1.1.2" + pkg-types: "npm:^1.1.1" + ufo: "npm:^1.5.3" + checksum: 10c0/d836a7b0adff4d118af41fb93ad4d9e57f80e694a681185280ba220a4607603c19e86c80f9a6c57512b04280567f2599e3386081705c5b5fd74c9ddfd571d0fa + languageName: node + linkType: hard + +"modify-values@npm:^1.0.0": + version: 1.0.1 + resolution: "modify-values@npm:1.0.1" + checksum: 10c0/6acb1b82aaf7a02f9f7b554b20cbfc159f223a79c66b0a257511c5933d50b85e12ea1220b0a90a2af6f80bc29ff784f929a52a51881867a93ae6a12ce87a729a + languageName: node + linkType: hard + +"motion@npm:10.16.2": + version: 10.16.2 + resolution: "motion@npm:10.16.2" + dependencies: + "@motionone/animation": "npm:^10.15.1" + "@motionone/dom": "npm:^10.16.2" + "@motionone/svelte": "npm:^10.16.2" + "@motionone/types": "npm:^10.15.1" + "@motionone/utils": "npm:^10.15.1" + "@motionone/vue": "npm:^10.16.2" + checksum: 10c0/ea3fa2c7ce881824bcefa39b96b5e2b802d4b664b8a64644cded11197c9262e2a5b14b2e9516940e06cec37d3c39e4c79b26825c447f71ba1cfd7e3370efbe61 + languageName: node + linkType: hard + +"mri@npm:^1.2.0": + version: 1.2.0 + resolution: "mri@npm:1.2.0" + checksum: 10c0/a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 + languageName: node + linkType: hard + +"mrmime@npm:1.0.1": + version: 1.0.1 + resolution: "mrmime@npm:1.0.1" + checksum: 10c0/ab071441da76fd23b3b0d1823d77aacf8679d379a4a94cacd83e487d3d906763b277f3203a594c613602e31ab5209c26a8119b0477c4541ef8555b293a9db6d3 + languageName: node + linkType: hard + +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d + languageName: node + linkType: hard + +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.2, ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"msgpackr-extract@npm:^3.0.2": + version: 3.0.3 + resolution: "msgpackr-extract@npm:3.0.3" + dependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-darwin-x64": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm64": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-x64": "npm:3.0.3" + "@msgpackr-extract/msgpackr-extract-win32-x64": "npm:3.0.3" + node-gyp: "npm:latest" + node-gyp-build-optional-packages: "npm:5.2.2" + dependenciesMeta: + "@msgpackr-extract/msgpackr-extract-darwin-arm64": + optional: true + "@msgpackr-extract/msgpackr-extract-darwin-x64": + optional: true + "@msgpackr-extract/msgpackr-extract-linux-arm": + optional: true + "@msgpackr-extract/msgpackr-extract-linux-arm64": + optional: true + "@msgpackr-extract/msgpackr-extract-linux-x64": + optional: true + "@msgpackr-extract/msgpackr-extract-win32-x64": + optional: true + bin: + download-msgpackr-prebuilds: bin/download-prebuilds.js + checksum: 10c0/e504fd8bf86a29d7527c83776530ee6dc92dcb0273bb3679fd4a85173efead7f0ee32fb82c8410a13c33ef32828c45f81118ffc0fbed5d6842e72299894623b4 + languageName: node + linkType: hard + +"msgpackr@npm:^1.9.5, msgpackr@npm:^1.9.9": + version: 1.11.0 + resolution: "msgpackr@npm:1.11.0" + dependencies: + msgpackr-extract: "npm:^3.0.2" + dependenciesMeta: + msgpackr-extract: + optional: true + checksum: 10c0/a7edc36754ec9f8469bc14c896f0f36e0e3de595c0bb5ac7b2ab8c2a72a2e188c12f1345d71a127f8537d9bbc880407a7073ac1d29c27822178bc0b81ae7370e + languageName: node + linkType: hard + +"multicast-dns@npm:^7.2.5": + version: 7.2.5 + resolution: "multicast-dns@npm:7.2.5" + dependencies: + dns-packet: "npm:^5.2.2" + thunky: "npm:^1.0.2" + bin: + multicast-dns: cli.js + checksum: 10c0/5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 + languageName: node + linkType: hard + +"multiformats@npm:^10.0.0, multiformats@npm:^10.0.1": + version: 10.0.3 + resolution: "multiformats@npm:10.0.3" + checksum: 10c0/582fc98c7a68247c457f27b88148fb0d67ee84a86395ada648f2503be6df826b769b144a3cb9ab8a77f7c1e786ce6df0231bc35854fc0fac4fba6059d3b4e842 + languageName: node + linkType: hard + +"multiformats@npm:^11.0.0, multiformats@npm:^11.0.2": + version: 11.0.2 + resolution: "multiformats@npm:11.0.2" + checksum: 10c0/cfc6f1d0332e538af4c86af72f2c23b32152b6d0d298987c1ee1bf7564997628c83ced740b2b1a4a20ca1fb1aa82f4d6e04d86d46befd69e521c914f7d0ef15c + languageName: node + linkType: hard + +"multiformats@npm:^12.0.1": + version: 12.1.3 + resolution: "multiformats@npm:12.1.3" + checksum: 10c0/abf4f601d4a262965a231b070a10071dc61f8a85c4ab48f021089333be33f0be72c4fdb498a7c0172278d5c3cb540cb1402cb8a7d5f4f1042651a508b5f05e4e + languageName: node + linkType: hard + +"multiformats@npm:^13.0.0": + version: 13.3.0 + resolution: "multiformats@npm:13.3.0" + checksum: 10c0/4ef4d591e36ab610b8592a975f3f7fec0d678450290cf668e093a561942bbcc03181f513422cdf996e73f014efa849207d00ddd252a4e640068c767dd0071312 + languageName: node + linkType: hard + +"multiformats@npm:^9.4.2": + version: 9.9.0 + resolution: "multiformats@npm:9.9.0" + checksum: 10c0/1fdb34fd2fb085142665e8bd402570659b50a5fae5994027e1df3add9e1ce1283ed1e0c2584a5c63ac0a58e871b8ee9665c4a99ca36ce71032617449d48aa975 + languageName: node + linkType: hard + +"mustache@npm:4.0.0": + version: 4.0.0 + resolution: "mustache@npm:4.0.0" + bin: + mustache: ./bin/mustache + checksum: 10c0/63f7fdb50b55f1285c2c601d2bef760a2e10a3ea68b020358430141010fd990c11e58bb62e1da59363a6e0c74c27c2b7277965f5bcf9a831961a93959450c6ff + languageName: node + linkType: hard + +"mute-stream@npm:0.0.8, mute-stream@npm:~0.0.4": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 + languageName: node + linkType: hard + +"my-near-wallet-commonjs-example@workspace:examples/my-near-wallet": + version: 0.0.0-use.local + resolution: "my-near-wallet-commonjs-example@workspace:examples/my-near-wallet" + dependencies: + "@near-js/crypto": "npm:*" + "@near-js/keystores-browser": "npm:*" + "@near-js/transactions": "npm:*" + "@near-js/utils": "npm:*" + "@near-js/wallet-account": "npm:*" + "@near-wallet-selector/core": "workspace:*" + "@near-wallet-selector/my-near-wallet": "workspace:*" + "@near-wallet-selector/wallet-utils": "workspace:*" + near-api-js: "npm:*" + languageName: unknown + linkType: soft + +"nanoid@npm:3.3.6": + version: 3.3.6 + resolution: "nanoid@npm:3.3.6" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/606b355960d0fcbe3d27924c4c52ef7d47d3b57208808ece73279420d91469b01ec1dce10fae512b6d4a8c5a5432b352b228336a8b2202a6ea68e67fa348e2ee + languageName: node + linkType: hard + +"nanoid@npm:^3.1.20, nanoid@npm:^3.3.4, nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + languageName: node + linkType: hard + +"nanoid@npm:^4.0.0": + version: 4.0.2 + resolution: "nanoid@npm:4.0.2" + bin: + nanoid: bin/nanoid.js + checksum: 10c0/3fec62f422bc4727918eda0e7aa43e9cbb2e759be72813a0587b9dac99727d3c7ad972efce7f4f1d4cb5c7c554136a1ec3b1043d1d91d28d818d6acbe98200e5 + languageName: node + linkType: hard + +"napi-build-utils@npm:^1.0.1": + version: 1.0.2 + resolution: "napi-build-utils@npm:1.0.2" + checksum: 10c0/37fd2cd0ff2ad20073ce78d83fd718a740d568b225924e753ae51cb69d68f330c80544d487e5e5bd18e28702ed2ca469c2424ad948becd1862c1b0209542b2e9 + languageName: node + linkType: hard + +"napi-wasm@npm:^1.1.0": + version: 1.1.3 + resolution: "napi-wasm@npm:1.1.3" + checksum: 10c0/7c365ab9dc59e6f20d7b7886279ecc03ffc7c3d502ed66d32652e3681c3a56c372f00f29b110aefd9b074a6bab6a997e9b602968c18622e2586818f417e41a5d + languageName: node + linkType: hard + +"native-fetch@npm:^3.0.0": + version: 3.0.0 + resolution: "native-fetch@npm:3.0.0" + peerDependencies: + node-fetch: "*" + checksum: 10c0/737cdd209dd366df8b748dabac39340089d57a2bcc460ffc029ec145f30aeffea0c6a6f177013069d6f7f04ffc8c3e39cfb8e3825e7071a373c4f86b187ae1b5 + languageName: node + linkType: hard + +"native-fetch@npm:^4.0.2": + version: 4.0.2 + resolution: "native-fetch@npm:4.0.2" + peerDependencies: + undici: "*" + checksum: 10c0/e3b824721daaa628086d9dcd02e8eb12f0a6c5e13a1d182682bae238d80c9bbf3dfd6314a94692ebe20316aa354476804b4df148201d066b46fc552a5794cfab + languageName: node + linkType: hard + +"natural-compare-lite@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare-lite@npm:1.4.0" + checksum: 10c0/f6cef26f5044515754802c0fc475d81426f3b90fe88c20fabe08771ce1f736ce46e0397c10acb569a4dd0acb84c7f1ee70676122f95d5bfdd747af3a6c6bbaa8 + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"near-abi@npm:0.1.1": + version: 0.1.1 + resolution: "near-abi@npm:0.1.1" + dependencies: + "@types/json-schema": "npm:^7.0.11" + checksum: 10c0/fe8b08cec9a75f0ddc96052bbace7753da7214d4eec06ae2c6fe88f647f9a4a1c8140534df2d7a6c58ad489d331c1e8988726fa510e1ad246a9441fc9c5ddb48 + languageName: node + linkType: hard + +"near-api-js@file:../near-api-js::locator=near-wallet-selector%40workspace%3A.": + version: 0.0.0 + resolution: "near-api-js@file:../near-api-js#../near-api-js::hash=372390&locator=near-wallet-selector%40workspace%3A." + dependencies: + "@hexagon/base64": "npm:1.1.26" + checksum: 10c0/158783671c389efebbff71d2ac55fe1766be07ff4b7d977a167a7692c9abd2adf87c41fcfbf4d5f01cf2f4e1183a96c037eda8676582ee2a6889d1351f534a92 + languageName: node + linkType: hard + +"near-api-js@npm:*": + version: 5.0.0 + resolution: "near-api-js@npm:5.0.0" + dependencies: + "@near-js/accounts": "npm:1.3.0" + "@near-js/crypto": "npm:1.4.0" + "@near-js/keystores": "npm:0.2.0" + "@near-js/keystores-browser": "npm:0.2.0" + "@near-js/keystores-node": "npm:0.1.0" + "@near-js/providers": "npm:1.0.0" + "@near-js/signers": "npm:0.2.0" + "@near-js/transactions": "npm:1.3.0" + "@near-js/types": "npm:0.3.0" + "@near-js/utils": "npm:1.0.0" + "@near-js/wallet-account": "npm:1.3.0" + "@noble/curves": "npm:1.2.0" + borsh: "npm:1.0.0" + depd: "npm:2.0.0" + http-errors: "npm:1.7.2" + near-abi: "npm:0.1.1" + node-fetch: "npm:2.6.7" + checksum: 10c0/d8fede144f197222b63ff6c0685ff98bda624ad5a5bdbf548749f6e32950c10d1388b814f74ebae5cf6044d1daf316d1913b1f207335bc47abbc57a2b9219e5a + languageName: node + linkType: hard + +"near-api-js@npm:4.0.3": + version: 4.0.3 + resolution: "near-api-js@npm:4.0.3" + dependencies: + "@near-js/accounts": "npm:1.2.1" + "@near-js/crypto": "npm:1.2.4" + "@near-js/keystores": "npm:0.0.12" + "@near-js/keystores-browser": "npm:0.0.12" + "@near-js/keystores-node": "npm:0.0.12" + "@near-js/providers": "npm:0.2.2" + "@near-js/signers": "npm:0.1.4" + "@near-js/transactions": "npm:1.2.2" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.2.2" + "@near-js/wallet-account": "npm:1.2.2" + "@noble/curves": "npm:1.2.0" + borsh: "npm:1.0.0" + depd: "npm:2.0.0" + http-errors: "npm:1.7.2" + near-abi: "npm:0.1.1" + node-fetch: "npm:2.6.7" + checksum: 10c0/e736894072b4c44f625a6e0d18608ac0d90a9b24134ec5fd079b7e9c23a31dd70d25933b0cf1febf7f114c9b87b39d73d96f01779eaa7c1d058806cc1449cb1e + languageName: node + linkType: hard + +"near-api-js@npm:^4.0.0, near-api-js@npm:^4.0.3": + version: 4.0.4 + resolution: "near-api-js@npm:4.0.4" + dependencies: + "@near-js/accounts": "npm:1.2.2" + "@near-js/crypto": "npm:1.3.0" + "@near-js/keystores": "npm:0.1.0" + "@near-js/keystores-browser": "npm:0.1.0" + "@near-js/keystores-node": "npm:0.0.13" + "@near-js/providers": "npm:0.2.3" + "@near-js/signers": "npm:0.1.5" + "@near-js/transactions": "npm:1.2.3" + "@near-js/types": "npm:0.2.1" + "@near-js/utils": "npm:0.3.0" + "@near-js/wallet-account": "npm:1.2.3" + "@noble/curves": "npm:1.2.0" + borsh: "npm:1.0.0" + depd: "npm:2.0.0" + http-errors: "npm:1.7.2" + near-abi: "npm:0.1.1" + node-fetch: "npm:2.6.7" + checksum: 10c0/e580c9432d27caa0c900f3e985907c112b88b6a6b6f07d156c0a4e197c15108b8dbd01f84a149cbea068c6823a379a2b7b92eab3aa9cb3a2a78aee17625d9381 + languageName: node + linkType: hard + +"near-hd-key@npm:^1.2.1": + version: 1.2.1 + resolution: "near-hd-key@npm:1.2.1" + dependencies: + bip39: "npm:3.0.2" + create-hmac: "npm:1.1.7" + tweetnacl: "npm:1.0.3" + checksum: 10c0/64e0a3d73ce77e1e107368c732885edb0d3f5fc464382db91420dded56b824c0e9235336f2fe026e58ef6a4e159480e73c9b7125eee75b83589517597efe6bb2 + languageName: node + linkType: hard + +"near-seed-phrase@npm:0.2.0": + version: 0.2.0 + resolution: "near-seed-phrase@npm:0.2.0" + dependencies: + bip39-light: "npm:^1.0.7" + bs58: "npm:^4.0.1" + near-hd-key: "npm:^1.2.1" + tweetnacl: "npm:^1.0.2" + checksum: 10c0/512f6b5f3236d054a4796861247e8c735c5a0eb17ad5a2c70e28bc69e409ae0340948c98cb972462d0b14f8cd7dc9ecea046de71ac42ec49cf5fbb0c47441da2 + languageName: node + linkType: hard + +"near-wallet-selector@workspace:.": + version: 0.0.0-use.local + resolution: "near-wallet-selector@workspace:." + dependencies: + "@angular-devkit/build-angular": "npm:16.1.8" + "@angular-devkit/core": "npm:16.1.8" + "@angular-devkit/schematics": "npm:16.1.8" + "@angular-eslint/eslint-plugin": "npm:15.0.0" + "@angular-eslint/eslint-plugin-template": "npm:15.0.0" + "@angular-eslint/template-parser": "npm:15.0.0" + "@angular/animations": "npm:16.1.9" + "@angular/cli": "npm:16.1.8" + "@angular/common": "npm:16.1.9" + "@angular/compiler": "npm:16.1.9" + "@angular/compiler-cli": "npm:16.1.8" + "@angular/core": "npm:16.1.9" + "@angular/forms": "npm:16.1.9" + "@angular/language-service": "npm:15.2.9" + "@angular/platform-browser": "npm:16.1.9" + "@angular/platform-browser-dynamic": "npm:16.1.9" + "@angular/router": "npm:16.1.9" + "@babel/preset-react": "npm:7.16.7" + "@babel/runtime": "npm:7.24.8" + "@here-wallet/core": "npm:3.3.1" + "@jscutlery/semver": "npm:5.3.1" + "@ledgerhq/hw-transport": "npm:6.30.3" + "@ledgerhq/hw-transport-webhid": "npm:6.29.2" + "@metamask/detect-provider": "npm:2.0.0" + "@meteorwallet/sdk": "npm:1.0.9" + "@mintbase-js/wallet": "npm:0.6.1" + "@near-js/crypto": "file:../near-api-js" + "@near-js/keystores-browser": "file:../near-api-js" + "@near-js/providers": "file:../near-api-js" + "@near-js/signers": "file:../near-api-js" + "@near-js/transactions": "file:../near-api-js" + "@near-js/types": "file:../near-api-js" + "@near-js/utils": "file:../near-api-js" + "@near-js/wallet-account": "file:../near-api-js" + "@near-snap/sdk": "npm:0.6.0" + "@noble/ciphers": "npm:0.5.3" + "@noble/hashes": "npm:1.4.0" + "@nrwl/js": "npm:16.0.0" + "@nrwl/rollup": "npm:16.0.0" + "@nrwl/tao": "npm:16.0.0" + "@nrwl/webpack": "npm:16.0.0" + "@peersyst/near-mobile-signer": "npm:1.1.0" + "@pmmmwh/react-refresh-webpack-plugin": "npm:0.5.7" + "@ramper/near": "npm:0.0.30" + "@schematics/angular": "npm:15.2.8" + "@semantic-release/commit-analyzer": "npm:9.0.2" + "@semantic-release/git": "npm:10.0.1" + "@semantic-release/npm": "npm:9.0.0" + "@svgr/webpack": "npm:6.1.2" + "@tanstack/react-query": "npm:5.24.8" + "@testing-library/jest-dom": "npm:5.16.1" + "@testing-library/react": "npm:13.4.0" + "@testing-library/react-hooks": "npm:7.0.2" + "@types/big.js": "npm:6.2.2" + "@types/gh-pages": "npm:6.1.0" + "@types/jest": "npm:29.4.4" + "@types/node": "npm:^22.7.4" + "@types/qrcode": "npm:1.5.5" + "@types/react": "npm:18.0.25" + "@types/react-dom": "npm:18.0.9" + "@types/regenerator-runtime": "npm:0.13.1" + "@types/w3c-web-hid": "npm:1.0.3" + "@types/w3c-web-usb": "npm:1.0.6" + "@typescript-eslint/eslint-plugin": "npm:5.58.0" + "@typescript-eslint/parser": "npm:5.58.0" + "@wagmi/core": "npm:2.10.6" + "@walletconnect/modal": "npm:2.6.2" + "@walletconnect/sign-client": "npm:2.13.0" + "@walletconnect/types": "npm:^2.17.1" + "@web3modal/wagmi": "npm:5.0.6" + babel-jest: "npm:29.4.3" + better-sqlite3: "npm:11.2.1" + big.js: "npm:6.2.1" + borsh: "npm:2.0.0" + browserify-fs: "npm:1.0.0" + bs58: "npm:5.0.0" + buffer: "npm:6.0.3" + copy-to-clipboard: "npm:3.3.3" + core-js: "npm:3.6.5" + crypto-browserify: "npm:3.12.0" + css-loader: "npm:7.1.2" + cypress: "npm:12.2.0" + eslint: "npm:8.15.0" + eslint-config-next: "npm:14.2.5" + eslint-config-prettier: "npm:8.1.0" + eslint-plugin-cypress: "npm:2.10.3" + eslint-plugin-import: "npm:2.26.0" + eslint-plugin-jsx-a11y: "npm:6.6.1" + eslint-plugin-prettier: "npm:4.2.1" + eslint-plugin-react: "npm:7.31.11" + eslint-plugin-react-hooks: "npm:4.6.2" + ethers: "npm:5.7.2" + gh-pages: "npm:6.1.1" + https-browserify: "npm:1.0.0" + is-mobile: "npm:4.0.0" + jest: "npm:29.7.0" + jest-environment-jsdom: "npm:29.7.0" + jest-mock-extended: "npm:2.0.6" + jest-preset-angular: "npm:13.0.0" + js-sha256: "npm:^0.11.0" + jsdoc: "npm:4.0.2" + jspm: "npm:3.1.0" + near-api-js: "file:../near-api-js" + near-seed-phrase: "npm:0.2.0" + next: "npm:13.3.0" + ngx-deploy-npm: "npm:7.1.0" + nx: "npm:16.4.0" + nx-cloud: "npm:16.0.5" + path-browserify: "npm:1.0.1" + prettier: "npm:2.7.1" + qrcode: "npm:1.5.4" + react: "npm:18.2.0" + react-dom: "npm:18.2.0" + react-qr-code: "npm:2.0.15" + react-refresh: "npm:0.10.0" + react-test-renderer: "npm:18.2.0" + regenerator-runtime: "npm:0.14.1" + rxjs: "npm:7.8.1" + sass: "npm:1.55.0" + semantic-release: "npm:19.0.2" + stream-browserify: "npm:3.0.0" + stream-http: "npm:3.2.0" + style-loader: "npm:3.3.0" + stylus: "npm:0.55.0" + stylus-loader: "npm:7.1.0" + ts-jest: "npm:29.1.0" + ts-node: "npm:10.9.1" + ts-prune: "npm:0.10.3" + tslib: "npm:2.7.0" + typescript: "npm:^5.6.2" + url: "npm:0.11.0" + url-loader: "npm:4.1.1" + util: "npm:0.12.5" + viem: "npm:2.16.2" + wagmi: "npm:2.10.9" + webpack: "npm:5.75.0" + webpack-merge: "npm:5.8.0" + zone.js: "npm:0.12.0" + languageName: unknown + linkType: soft + +"needle@npm:^3.1.0": + version: 3.3.1 + resolution: "needle@npm:3.3.1" + dependencies: + iconv-lite: "npm:^0.6.3" + sax: "npm:^1.2.4" + bin: + needle: bin/needle + checksum: 10c0/233b9315d47b735867d03e7a018fb665ee6cacf3a83b991b19538019cf42b538a3e85ca745c840b4c5e9a0ffdca76472f941363bf7c166214ae8cbc650fd4d39 + languageName: node + linkType: hard + +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + languageName: node + linkType: hard + +"nerf-dart@npm:^1.0.0": + version: 1.0.0 + resolution: "nerf-dart@npm:1.0.0" + checksum: 10c0/e19e17d7bd91dfcb1acd07cbdd8df1f0613f3408227538fe91793c6dfcf58e95b5f18b88b4a13e9b31587e89a119fd76d6df4b8d8c65564dd2c409d787819583 + languageName: node + linkType: hard + +"next@npm:13.3.0": + version: 13.3.0 + resolution: "next@npm:13.3.0" + dependencies: + "@next/env": "npm:13.3.0" + "@next/swc-darwin-arm64": "npm:13.3.0" + "@next/swc-darwin-x64": "npm:13.3.0" + "@next/swc-linux-arm64-gnu": "npm:13.3.0" + "@next/swc-linux-arm64-musl": "npm:13.3.0" + "@next/swc-linux-x64-gnu": "npm:13.3.0" + "@next/swc-linux-x64-musl": "npm:13.3.0" + "@next/swc-win32-arm64-msvc": "npm:13.3.0" + "@next/swc-win32-ia32-msvc": "npm:13.3.0" + "@next/swc-win32-x64-msvc": "npm:13.3.0" + "@swc/helpers": "npm:0.4.14" + busboy: "npm:1.6.0" + caniuse-lite: "npm:^1.0.30001406" + postcss: "npm:8.4.14" + styled-jsx: "npm:5.1.1" + peerDependencies: + "@opentelemetry/api": ^1.1.0 + fibers: ">= 3.1.0" + node-sass: ^6.0.0 || ^7.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + dependenciesMeta: + "@next/swc-darwin-arm64": + optional: true + "@next/swc-darwin-x64": + optional: true + "@next/swc-linux-arm64-gnu": + optional: true + "@next/swc-linux-arm64-musl": + optional: true + "@next/swc-linux-x64-gnu": + optional: true + "@next/swc-linux-x64-musl": + optional: true + "@next/swc-win32-arm64-msvc": + optional: true + "@next/swc-win32-ia32-msvc": + optional: true + "@next/swc-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + bin: + next: dist/bin/next + checksum: 10c0/da0369d4edc0e3a8c7650101a39f88da3d43a1601f5a16605b1f69c14b0ffb698a41f81c541317191c90124193150a2d72229ef11e7a75ec72be121e09a6a3de + languageName: node + linkType: hard + +"ngx-deploy-npm@npm:7.1.0": + version: 7.1.0 + resolution: "ngx-deploy-npm@npm:7.1.0" + peerDependencies: + "@nx/devkit": ^16.0.0 || ^17.0.0 || ^18.0.0 + tslib: ^2.3.0 + checksum: 10c0/c5782674cb43d22d510f2a1ca66ca56bc163a7127582f189b424a1a6fa705d515ecaf7249e2486fd8e97656ed7f6b1ff939ed3f4464e285b5db862211d62f2d7 + languageName: node + linkType: hard + +"nice-napi@npm:^1.0.2": + version: 1.0.2 + resolution: "nice-napi@npm:1.0.2" + dependencies: + node-addon-api: "npm:^3.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.2" + conditions: "!os=win32" + languageName: node + linkType: hard + +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: "npm:^2.0.2" + tslib: "npm:^2.0.3" + checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 + languageName: node + linkType: hard + +"node-abi@npm:^3.3.0": + version: 3.68.0 + resolution: "node-abi@npm:3.68.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/0f20cdb1216485ef399f581fe8fad300f1321cc66e08a7e2e7c6c6a1d89006799c464943e45dae19ec39ba581f6417dff4af21324a09c1e74a4e2fc1bceb0f83 + languageName: node + linkType: hard + +"node-abort-controller@npm:^3.0.1": + version: 3.1.1 + resolution: "node-abort-controller@npm:3.1.1" + checksum: 10c0/f7ad0e7a8e33809d4f3a0d1d65036a711c39e9d23e0319d80ebe076b9a3b4432b4d6b86a7fab65521de3f6872ffed36fc35d1327487c48eb88c517803403eda3 + languageName: node + linkType: hard + +"node-addon-api@npm:^2.0.0": + version: 2.0.2 + resolution: "node-addon-api@npm:2.0.2" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/ade6c097ba829fa4aee1ca340117bb7f8f29fdae7b777e343a9d5cbd548481d1f0894b7b907d23ce615c70d932e8f96154caed95c3fa935cfe8cf87546510f64 + languageName: node + linkType: hard + +"node-addon-api@npm:^3.0.0, node-addon-api@npm:^3.2.1": + version: 3.2.1 + resolution: "node-addon-api@npm:3.2.1" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/41f21c9d12318875a2c429befd06070ce367065a3ef02952cfd4ea17ef69fa14012732f510b82b226e99c254da8d671847ea018cad785f839a5366e02dd56302 + languageName: node + linkType: hard + +"node-addon-api@npm:^5.0.0": + version: 5.1.0 + resolution: "node-addon-api@npm:5.1.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/0eb269786124ba6fad9df8007a149e03c199b3e5a3038125dfb3e747c2d5113d406a4e33f4de1ea600aa2339be1f137d55eba1a73ee34e5fff06c52a5c296d1d + languageName: node + linkType: hard + +"node-addon-api@npm:^6.1.0": + version: 6.1.0 + resolution: "node-addon-api@npm:6.1.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/d2699c4ad15740fd31482a3b6fca789af7723ab9d393adc6ac45250faaee72edad8f0b10b2b9d087df0de93f1bdc16d97afdd179b26b9ebc9ed68b569faa4bac + languageName: node + linkType: hard + +"node-addon-api@npm:^7.0.0": + version: 7.1.1 + resolution: "node-addon-api@npm:7.1.1" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/fb32a206276d608037fa1bcd7e9921e177fe992fc610d098aa3128baca3c0050fc1e014fa007e9b3874cf865ddb4f5bd9f43ccb7cbbbe4efaff6a83e920b17e9 + languageName: node + linkType: hard + +"node-emoji@npm:^1.11.0": + version: 1.11.0 + resolution: "node-emoji@npm:1.11.0" + dependencies: + lodash: "npm:^4.17.21" + checksum: 10c0/5dac6502dbef087092d041fcc2686d8be61168593b3a9baf964d62652f55a3a9c2277f171b81cccb851ccef33f2d070f45e633fab1fda3264f8e1ae9041c673f + languageName: node + linkType: hard + +"node-fetch-native@npm:^1.6.4": + version: 1.6.4 + resolution: "node-fetch-native@npm:1.6.4" + checksum: 10c0/78334dc6def5d1d95cfe87b33ac76c4833592c5eb84779ad2b0c23c689f9dd5d1cfc827035ada72d6b8b218f717798968c5a99aeff0a1a8bf06657e80592f9c3 + languageName: node + linkType: hard + +"node-fetch@npm:2.6.7": + version: 2.6.7 + resolution: "node-fetch@npm:2.6.7" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/fcae80f5ac52fbf5012f5e19df2bd3915e67d3b3ad51cb5942943df2238d32ba15890fecabd0e166876a9f98a581ab50f3f10eb942b09405c49ef8da36b826c7 + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.8": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"node-forge@npm:^1, node-forge@npm:^1.3.1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 + languageName: node + linkType: hard + +"node-gyp-build-optional-packages@npm:5.1.1": + version: 5.1.1 + resolution: "node-gyp-build-optional-packages@npm:5.1.1" + dependencies: + detect-libc: "npm:^2.0.1" + bin: + node-gyp-build-optional-packages: bin.js + node-gyp-build-optional-packages-optional: optional.js + node-gyp-build-optional-packages-test: build-test.js + checksum: 10c0/f9fad2061c48fb0fc90831cd11d6a7670d731d22a5b00c7d3441b43b4003543299ff64ff2729afe2cefd7d14928e560d469336e5bb00f613932ec2cd56b3665b + languageName: node + linkType: hard + +"node-gyp-build-optional-packages@npm:5.2.2": + version: 5.2.2 + resolution: "node-gyp-build-optional-packages@npm:5.2.2" + dependencies: + detect-libc: "npm:^2.0.1" + bin: + node-gyp-build-optional-packages: bin.js + node-gyp-build-optional-packages-optional: optional.js + node-gyp-build-optional-packages-test: build-test.js + checksum: 10c0/c81128c6f91873381be178c5eddcbdf66a148a6a89a427ce2bcd457593ce69baf2a8662b6d22cac092d24aa9c43c230dec4e69b3a0da604503f4777cd77e282b + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.2.2, node-gyp-build@npm:^4.3.0": + version: 4.8.2 + resolution: "node-gyp-build@npm:4.8.2" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 10c0/d816b43974d31d6257b6e87d843f2626c72389a285208394bc57a7766b210454d2642860a5e5b5c333d8ecabaeabad3b31b94f58cf8ca1aabdef0c320d02baaa + languageName: node + linkType: hard + +"node-gyp@npm:^9.0.0, node-gyp@npm:^9.1.0": + version: 9.4.1 + resolution: "node-gyp@npm:9.4.1" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^10.0.3" + nopt: "npm:^6.0.0" + npmlog: "npm:^6.0.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^2.0.2" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/f7d676cfa79f27d35edf17fe9c80064123670362352d19729e5dc9393d7e99f1397491c3107eddc0c0e8941442a6244a7ba6c860cfbe4b433b4cae248a55fe10 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^4.1.0" + semver: "npm:^7.3.5" + tar: "npm:^6.2.1" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/00630d67dbd09a45aee0a5d55c05e3916ca9e6d427ee4f7bc392d2d3dc5fad7449b21fc098dd38260a53d9dcc9c879b36704a1994235d4707e7271af7e9a835b + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + +"node-machine-id@npm:^1.1.12": + version: 1.1.12 + resolution: "node-machine-id@npm:1.1.12" + checksum: 10c0/ab2fea5f75a6f1ce3c76c5e0ae3903b631230e0a99b003d176568fff8ddbdf7b2943be96cd8d220c497ca0f6149411831f8a450601929f326781cb1b59bab7f8 + languageName: node + linkType: hard + +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 + languageName: node + linkType: hard + +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: "npm:^1.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/a069c7c736767121242037a22a788863accfa932ab285a1eb569eb8cd534b09d17206f68c37f096ae785647435e0c5a5a0a67b42ec743e481a455e5ae6a6df81 + languageName: node + linkType: hard + +"normalize-package-data@npm:^2.5.0": + version: 2.5.0 + resolution: "normalize-package-data@npm:2.5.0" + dependencies: + hosted-git-info: "npm:^2.1.4" + resolve: "npm:^1.10.0" + semver: "npm:2 || 3 || 4 || 5" + validate-npm-package-license: "npm:^3.0.1" + checksum: 10c0/357cb1646deb42f8eb4c7d42c4edf0eec312f3628c2ef98501963cc4bbe7277021b2b1d977f982b2edce78f5a1014613ce9cf38085c3df2d76730481357ca504 + languageName: node + linkType: hard + +"normalize-package-data@npm:^3.0.0": + version: 3.0.3 + resolution: "normalize-package-data@npm:3.0.3" + dependencies: + hosted-git-info: "npm:^4.0.1" + is-core-module: "npm:^2.5.0" + semver: "npm:^7.3.4" + validate-npm-package-license: "npm:^3.0.1" + checksum: 10c0/e5d0f739ba2c465d41f77c9d950e291ea4af78f8816ddb91c5da62257c40b76d8c83278b0d08ffbcd0f187636ebddad20e181e924873916d03e6e5ea2ef026be + languageName: node + linkType: hard + +"normalize-package-data@npm:^4.0.0": + version: 4.0.1 + resolution: "normalize-package-data@npm:4.0.1" + dependencies: + hosted-git-info: "npm:^5.0.0" + is-core-module: "npm:^2.8.1" + semver: "npm:^7.3.5" + validate-npm-package-license: "npm:^3.0.4" + checksum: 10c0/3a6ace810d1bd2fd23b98fa53790a28bbfade5380eea0f2e0cc5cbc24987db43a4780846942edee7069fa9574bf050a9ed8d35faf9079e5e4d9a737d07a136dd + languageName: node + linkType: hard + +"normalize-package-data@npm:^5.0.0": + version: 5.0.0 + resolution: "normalize-package-data@npm:5.0.0" + dependencies: + hosted-git-info: "npm:^6.0.0" + is-core-module: "npm:^2.8.1" + semver: "npm:^7.3.5" + validate-npm-package-license: "npm:^3.0.4" + checksum: 10c0/705fe66279edad2f93f6e504d5dc37984e404361a3df921a76ab61447eb285132d20ff261cc0bee9566b8ce895d75fcfec913417170add267e2873429fe38392 + languageName: node + linkType: hard + +"normalize-package-data@npm:^6.0.0": + version: 6.0.2 + resolution: "normalize-package-data@npm:6.0.2" + dependencies: + hosted-git-info: "npm:^7.0.0" + semver: "npm:^7.3.5" + validate-npm-package-license: "npm:^3.0.4" + checksum: 10c0/7e32174e7f5575ede6d3d449593247183880122b4967d4ae6edb28cea5769ca025defda54fc91ec0e3c972fdb5ab11f9284606ba278826171b264cb16a9311ef + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"normalize-range@npm:^0.1.2": + version: 0.1.2 + resolution: "normalize-range@npm:0.1.2" + checksum: 10c0/bf39b73a63e0a42ad1a48c2bd1bda5a07ede64a7e2567307a407674e595bcff0fa0d57e8e5f1e7fa5e91000797c7615e13613227aaaa4d6d6e87f5bd5cc95de6 + languageName: node + linkType: hard + +"normalize-url@npm:^6.0.0, normalize-url@npm:^6.0.1": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 10c0/95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23 + languageName: node + linkType: hard + +"npm-audit-report@npm:^3.0.0": + version: 3.0.0 + resolution: "npm-audit-report@npm:3.0.0" + dependencies: + chalk: "npm:^4.0.0" + checksum: 10c0/a8ce2ce80cc11334d58fef28f0b8eef1626f134942d27212dbac8c2dfbfe10373d2978101ceb2b472b8199170bb1c6986f32d33d9879f05d28a32ec56d743915 + languageName: node + linkType: hard + +"npm-bundled@npm:^1.1.1": + version: 1.1.2 + resolution: "npm-bundled@npm:1.1.2" + dependencies: + npm-normalize-package-bin: "npm:^1.0.1" + checksum: 10c0/3f2337789afc8cb608a0dd71cefe459531053d48a5497db14b07b985c4cab15afcae88600db9f92eae072c89b982eeeec8e4463e1d77bc03a7e90f5dacf29769 + languageName: node + linkType: hard + +"npm-bundled@npm:^2.0.0": + version: 2.0.1 + resolution: "npm-bundled@npm:2.0.1" + dependencies: + npm-normalize-package-bin: "npm:^2.0.0" + checksum: 10c0/5b2dc1de455d38200e49c6205dee185ce919ea6b608672c693bec8907116bc5686dabcc150347630d351c1c533315fd60a1910ce00bdad6bb204cef016b90b7d + languageName: node + linkType: hard + +"npm-bundled@npm:^3.0.0": + version: 3.0.1 + resolution: "npm-bundled@npm:3.0.1" + dependencies: + npm-normalize-package-bin: "npm:^3.0.0" + checksum: 10c0/7975590a50b7ce80dd9f3eddc87f7e990c758f2f2c4d9313dd67a9aca38f1a5ac0abe20d514b850902c441e89d2346adfc3c6f1e9cbab3ea28ebb653c4442440 + languageName: node + linkType: hard + +"npm-install-checks@npm:^5.0.0": + version: 5.0.0 + resolution: "npm-install-checks@npm:5.0.0" + dependencies: + semver: "npm:^7.1.1" + checksum: 10c0/eb108e1c1ac38c76f9a658ab2b4871836246e262836c05d42a23049e0399e6c8cdcf65a1e50193b64807a3b2b86f8e158d0161db98e846d7e9617bc5f49337af + languageName: node + linkType: hard + +"npm-install-checks@npm:^6.0.0": + version: 6.3.0 + resolution: "npm-install-checks@npm:6.3.0" + dependencies: + semver: "npm:^7.1.1" + checksum: 10c0/b046ef1de9b40f5d3a9831ce198e1770140a1c3f253dae22eb7b06045191ef79f18f1dcc15a945c919b3c161426861a28050abd321bf439190185794783b6452 + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^1.0.1": + version: 1.0.1 + resolution: "npm-normalize-package-bin@npm:1.0.1" + checksum: 10c0/b0c8c05fe419a122e0ff970ccbe7874ae24b4b4b08941a24d18097fe6e1f4b93e3f6abfb5512f9c5488827a5592f2fb3ce2431c41d338802aed24b9a0c160551 + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^2.0.0": + version: 2.0.0 + resolution: "npm-normalize-package-bin@npm:2.0.0" + checksum: 10c0/9b5283a2e423124c60fbc14244d36686b59e517d29156eacf9df8d3dc5d5bf4d9444b7669c607567ed2e089bbdbef5a2b3678cbf567284eeff3612da6939514b + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^3.0.0": + version: 3.0.1 + resolution: "npm-normalize-package-bin@npm:3.0.1" + checksum: 10c0/f1831a7f12622840e1375c785c3dab7b1d82dd521211c17ee5e9610cd1a34d8b232d3fdeebf50c170eddcb321d2c644bf73dbe35545da7d588c6b3fa488db0a5 + languageName: node + linkType: hard + +"npm-package-arg@npm:10.1.0, npm-package-arg@npm:^10.0.0": + version: 10.1.0 + resolution: "npm-package-arg@npm:10.1.0" + dependencies: + hosted-git-info: "npm:^6.0.0" + proc-log: "npm:^3.0.0" + semver: "npm:^7.3.5" + validate-npm-package-name: "npm:^5.0.0" + checksum: 10c0/ab56ed775b48e22755c324536336e3749b6a17763602bc0fb0d7e8b298100c2de8b5e2fb1d4fb3f451e9e076707a27096782e9b3a8da0c5b7de296be184b5a90 + languageName: node + linkType: hard + +"npm-package-arg@npm:^9.0.0, npm-package-arg@npm:^9.0.1, npm-package-arg@npm:^9.1.0": + version: 9.1.2 + resolution: "npm-package-arg@npm:9.1.2" + dependencies: + hosted-git-info: "npm:^5.0.0" + proc-log: "npm:^2.0.1" + semver: "npm:^7.3.5" + validate-npm-package-name: "npm:^4.0.0" + checksum: 10c0/e81aa931adfc5f19fb9f10fe9eb120a0203d63b879594b1a473c64257761cdde42e32fb5d9b2e90d6944a3229e8c3ffa62ce8c31a7c9c4971d34f9219fdc0bb5 + languageName: node + linkType: hard + +"npm-packlist@npm:^5.1.0": + version: 5.1.3 + resolution: "npm-packlist@npm:5.1.3" + dependencies: + glob: "npm:^8.0.1" + ignore-walk: "npm:^5.0.1" + npm-bundled: "npm:^2.0.0" + npm-normalize-package-bin: "npm:^2.0.0" + bin: + npm-packlist: bin/index.js + checksum: 10c0/a8bea97661b2a7132bc8832d5560da24f823ee5324429bd16eb82b7873557de14641bc3fed8a7611b0d88b9771e59e99e01a9e551a53adb164327ded6128aada + languageName: node + linkType: hard + +"npm-packlist@npm:^7.0.0": + version: 7.0.4 + resolution: "npm-packlist@npm:7.0.4" + dependencies: + ignore-walk: "npm:^6.0.0" + checksum: 10c0/a6528b2d0aa09288166a21a04bb152231d29fd8c0e40e551ea5edb323a12d0580aace11b340387ba3a01c614db25bb4100a10c20d0ff53976eed786f95b82536 + languageName: node + linkType: hard + +"npm-pick-manifest@npm:8.0.1": + version: 8.0.1 + resolution: "npm-pick-manifest@npm:8.0.1" + dependencies: + npm-install-checks: "npm:^6.0.0" + npm-normalize-package-bin: "npm:^3.0.0" + npm-package-arg: "npm:^10.0.0" + semver: "npm:^7.3.5" + checksum: 10c0/920cc33167b52f5fb26a5cfcf78486ea62c3c04c7716a3a0c973754b4ea13dd00cedcd9bbd772845d914b91d0ad6d5d06c52e6be189fbcefcdeba7f8293deb14 + languageName: node + linkType: hard + +"npm-pick-manifest@npm:^7.0.0, npm-pick-manifest@npm:^7.0.2": + version: 7.0.2 + resolution: "npm-pick-manifest@npm:7.0.2" + dependencies: + npm-install-checks: "npm:^5.0.0" + npm-normalize-package-bin: "npm:^2.0.0" + npm-package-arg: "npm:^9.0.0" + semver: "npm:^7.3.5" + checksum: 10c0/522ba83a9ec92405b720a135b4333bc237063994f1244ff8125fd906979feedff3775472caa87779a260294ff4d2cd949c6f679ab353b2d81bca76c466539b67 + languageName: node + linkType: hard + +"npm-pick-manifest@npm:^8.0.0": + version: 8.0.2 + resolution: "npm-pick-manifest@npm:8.0.2" + dependencies: + npm-install-checks: "npm:^6.0.0" + npm-normalize-package-bin: "npm:^3.0.0" + npm-package-arg: "npm:^10.0.0" + semver: "npm:^7.3.5" + checksum: 10c0/9e58f7732203dbfdd7a338d6fd691c564017fd2ebfaa0ea39528a21db0c99f26370c759d99a0c5684307b79dbf76fa20e387010358a8651e273dc89930e922a0 + languageName: node + linkType: hard + +"npm-profile@npm:^6.2.0": + version: 6.2.1 + resolution: "npm-profile@npm:6.2.1" + dependencies: + npm-registry-fetch: "npm:^13.0.1" + proc-log: "npm:^2.0.0" + checksum: 10c0/1397ce26905a4ca1a2ea4080acbceeddc93fcac753295b8cc7738e38b8e0018d59219c6cb7c5a059d870b3e94bd6bac6aea628dd971dbe47e0ec2d82f7e0a031 + languageName: node + linkType: hard + +"npm-registry-fetch@npm:^13.0.0, npm-registry-fetch@npm:^13.0.1, npm-registry-fetch@npm:^13.3.1": + version: 13.3.1 + resolution: "npm-registry-fetch@npm:13.3.1" + dependencies: + make-fetch-happen: "npm:^10.0.6" + minipass: "npm:^3.1.6" + minipass-fetch: "npm:^2.0.3" + minipass-json-stream: "npm:^1.0.1" + minizlib: "npm:^2.1.2" + npm-package-arg: "npm:^9.0.1" + proc-log: "npm:^2.0.0" + checksum: 10c0/86c8cdc2b0d2aa97d06031962f39442b0eacecd9989eebc88451e6b53b3c8572b89fb09cf0042ce6080e7d120353af359a75c5f60b085b5b455337d1e39e57ab + languageName: node + linkType: hard + +"npm-registry-fetch@npm:^14.0.0": + version: 14.0.5 + resolution: "npm-registry-fetch@npm:14.0.5" + dependencies: + make-fetch-happen: "npm:^11.0.0" + minipass: "npm:^5.0.0" + minipass-fetch: "npm:^3.0.0" + minipass-json-stream: "npm:^1.0.1" + minizlib: "npm:^2.1.2" + npm-package-arg: "npm:^10.0.0" + proc-log: "npm:^3.0.0" + checksum: 10c0/6f556095feb20455d6dc3bb2d5f602df9c5725ab49bca8570135e2900d0ccd0a619427bb668639d94d42651fab0a9e8e234f5381767982a1af17d721799cfc2d + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"npm-run-path@npm:^5.1.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" + dependencies: + path-key: "npm:^4.0.0" + checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba + languageName: node + linkType: hard + +"npm-user-validate@npm:^1.0.1": + version: 1.0.1 + resolution: "npm-user-validate@npm:1.0.1" + checksum: 10c0/b6533da7df07c4495e8e209eba7191846683443503897e10e0acfb52fedefde34028f221b7ee5ae45b79ada13748a8e881a20392cd0fb93d190b1bf54ef1ee42 + languageName: node + linkType: hard + +"npm@npm:^8.3.0": + version: 8.19.4 + resolution: "npm@npm:8.19.4" + dependencies: + "@isaacs/string-locale-compare": "npm:^1.1.0" + "@npmcli/arborist": "npm:^5.6.3" + "@npmcli/ci-detect": "npm:^2.0.0" + "@npmcli/config": "npm:^4.2.1" + "@npmcli/fs": "npm:^2.1.0" + "@npmcli/map-workspaces": "npm:^2.0.3" + "@npmcli/package-json": "npm:^2.0.0" + "@npmcli/run-script": "npm:^4.2.1" + abbrev: "npm:~1.1.1" + archy: "npm:~1.0.0" + cacache: "npm:^16.1.3" + chalk: "npm:^4.1.2" + chownr: "npm:^2.0.0" + cli-columns: "npm:^4.0.0" + cli-table3: "npm:^0.6.2" + columnify: "npm:^1.6.0" + fastest-levenshtein: "npm:^1.0.12" + fs-minipass: "npm:^2.1.0" + glob: "npm:^8.0.1" + graceful-fs: "npm:^4.2.10" + hosted-git-info: "npm:^5.2.1" + ini: "npm:^3.0.1" + init-package-json: "npm:^3.0.2" + is-cidr: "npm:^4.0.2" + json-parse-even-better-errors: "npm:^2.3.1" + libnpmaccess: "npm:^6.0.4" + libnpmdiff: "npm:^4.0.5" + libnpmexec: "npm:^4.0.14" + libnpmfund: "npm:^3.0.5" + libnpmhook: "npm:^8.0.4" + libnpmorg: "npm:^4.0.4" + libnpmpack: "npm:^4.1.3" + libnpmpublish: "npm:^6.0.5" + libnpmsearch: "npm:^5.0.4" + libnpmteam: "npm:^4.0.4" + libnpmversion: "npm:^3.0.7" + make-fetch-happen: "npm:^10.2.0" + minimatch: "npm:^5.1.0" + minipass: "npm:^3.1.6" + minipass-pipeline: "npm:^1.2.4" + mkdirp: "npm:^1.0.4" + mkdirp-infer-owner: "npm:^2.0.0" + ms: "npm:^2.1.2" + node-gyp: "npm:^9.1.0" + nopt: "npm:^6.0.0" + npm-audit-report: "npm:^3.0.0" + npm-install-checks: "npm:^5.0.0" + npm-package-arg: "npm:^9.1.0" + npm-pick-manifest: "npm:^7.0.2" + npm-profile: "npm:^6.2.0" + npm-registry-fetch: "npm:^13.3.1" + npm-user-validate: "npm:^1.0.1" + npmlog: "npm:^6.0.2" + opener: "npm:^1.5.2" + p-map: "npm:^4.0.0" + pacote: "npm:^13.6.2" + parse-conflict-json: "npm:^2.0.2" + proc-log: "npm:^2.0.1" + qrcode-terminal: "npm:^0.12.0" + read: "npm:~1.0.7" + read-package-json: "npm:^5.0.2" + read-package-json-fast: "npm:^2.0.3" + readdir-scoped-modules: "npm:^1.1.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.7" + ssri: "npm:^9.0.1" + tar: "npm:^6.1.11" + text-table: "npm:~0.2.0" + tiny-relative-date: "npm:^1.3.0" + treeverse: "npm:^2.0.0" + validate-npm-package-name: "npm:^4.0.0" + which: "npm:^2.0.2" + write-file-atomic: "npm:^4.0.1" + bin: + npm: bin/npm-cli.js + npx: bin/npx-cli.js + checksum: 10c0/a27e0d108f6281b66fcad8daf6501dac62791285b974eba283275e65be1ababa8222b4e33fd95fddbd7236481e694141018f6715dac4831bcae3a54add092080 + languageName: node + linkType: hard + +"npmlog@npm:^6.0.0, npmlog@npm:^6.0.2": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: "npm:^3.0.0" + console-control-strings: "npm:^1.1.0" + gauge: "npm:^4.0.3" + set-blocking: "npm:^2.0.0" + checksum: 10c0/0cacedfbc2f6139c746d9cd4a85f62718435ad0ca4a2d6459cd331dd33ae58206e91a0742c1558634efcde3f33f8e8e7fd3adf1bfe7978310cf00bd55cccf890 + languageName: node + linkType: hard + +"nth-check@npm:^2.0.1": + version: 2.1.1 + resolution: "nth-check@npm:2.1.1" + dependencies: + boolbase: "npm:^1.0.0" + checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 + languageName: node + linkType: hard + +"nullthrows@npm:^1.1.1": + version: 1.1.1 + resolution: "nullthrows@npm:1.1.1" + checksum: 10c0/56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.2": + version: 2.2.13 + resolution: "nwsapi@npm:2.2.13" + checksum: 10c0/9dbd1071bba3570ef0b046c43c03d0584c461063f27539ba39f4185188e9d5c10cb06fd4426cdb300bb83020c3daa2c8f4fa9e8a070299539ac4007433357ac0 + languageName: node + linkType: hard + +"nx-cloud@npm:16.0.5": + version: 16.0.5 + resolution: "nx-cloud@npm:16.0.5" + dependencies: + "@nrwl/nx-cloud": "npm:16.0.5" + axios: "npm:1.1.3" + chalk: "npm:^4.1.0" + dotenv: "npm:~10.0.0" + fs-extra: "npm:^11.1.0" + node-machine-id: "npm:^1.1.12" + open: "npm:~8.4.0" + strip-json-comments: "npm:^3.1.1" + tar: "npm:6.1.11" + yargs-parser: "npm:>=21.1.1" + bin: + nx-cloud: bin/nx-cloud.js + checksum: 10c0/02f0bf081c3f69c2682d9e21bc9e281df80a0e31852cd81cb8746d9dd07ebdc071c5138867ed9b84f922c0da40bd0170f2d735c4d8cf0768c24d6a47078ebf48 + languageName: node + linkType: hard + +"nx@npm:16.0.0": + version: 16.0.0 + resolution: "nx@npm:16.0.0" + dependencies: + "@nrwl/tao": "npm:16.0.0" + "@nx/nx-darwin-arm64": "npm:16.0.0" + "@nx/nx-darwin-x64": "npm:16.0.0" + "@nx/nx-linux-arm-gnueabihf": "npm:16.0.0" + "@nx/nx-linux-arm64-gnu": "npm:16.0.0" + "@nx/nx-linux-arm64-musl": "npm:16.0.0" + "@nx/nx-linux-x64-gnu": "npm:16.0.0" + "@nx/nx-linux-x64-musl": "npm:16.0.0" + "@nx/nx-win32-arm64-msvc": "npm:16.0.0" + "@nx/nx-win32-x64-msvc": "npm:16.0.0" + "@parcel/watcher": "npm:2.0.4" + "@yarnpkg/lockfile": "npm:^1.1.0" + "@yarnpkg/parsers": "npm:^3.0.0-rc.18" + "@zkochan/js-yaml": "npm:0.0.6" + axios: "npm:^1.0.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:3.1.0" + cli-spinners: "npm:2.6.1" + cliui: "npm:^7.0.2" + dotenv: "npm:~10.0.0" + enquirer: "npm:~2.3.6" + fast-glob: "npm:3.2.7" + figures: "npm:3.2.0" + flat: "npm:^5.0.2" + fs-extra: "npm:^11.1.0" + glob: "npm:7.1.4" + ignore: "npm:^5.0.4" + js-yaml: "npm:4.1.0" + jsonc-parser: "npm:3.2.0" + lines-and-columns: "npm:~2.0.3" + minimatch: "npm:3.0.5" + npm-run-path: "npm:^4.0.1" + open: "npm:^8.4.0" + semver: "npm:7.3.4" + string-width: "npm:^4.2.3" + strong-log-transformer: "npm:^2.1.0" + tar-stream: "npm:~2.2.0" + tmp: "npm:~0.2.1" + tsconfig-paths: "npm:^4.1.2" + tslib: "npm:^2.3.0" + v8-compile-cache: "npm:2.3.0" + yargs: "npm:^17.6.2" + yargs-parser: "npm:21.1.1" + peerDependencies: + "@swc-node/register": ^1.4.2 + "@swc/core": ^1.2.173 + dependenciesMeta: + "@nx/nx-darwin-arm64": + optional: true + "@nx/nx-darwin-x64": + optional: true + "@nx/nx-linux-arm-gnueabihf": + optional: true + "@nx/nx-linux-arm64-gnu": + optional: true + "@nx/nx-linux-arm64-musl": + optional: true + "@nx/nx-linux-x64-gnu": + optional: true + "@nx/nx-linux-x64-musl": + optional: true + "@nx/nx-win32-arm64-msvc": + optional: true + "@nx/nx-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc-node/register": + optional: true + "@swc/core": + optional: true + bin: + nx: bin/nx.js + checksum: 10c0/17001edde973c8c834968972b4d6c649bdec18c62eac0cf0a9bd17d2cd5c1179382845c816ed6cf2b0957dbbe01ebdc824fe809f02af2ccebddf14682e285969 + languageName: node + linkType: hard + +"nx@npm:16.4.0": + version: 16.4.0 + resolution: "nx@npm:16.4.0" + dependencies: + "@nrwl/tao": "npm:16.4.0" + "@nx/nx-darwin-arm64": "npm:16.4.0" + "@nx/nx-darwin-x64": "npm:16.4.0" + "@nx/nx-freebsd-x64": "npm:16.4.0" + "@nx/nx-linux-arm-gnueabihf": "npm:16.4.0" + "@nx/nx-linux-arm64-gnu": "npm:16.4.0" + "@nx/nx-linux-arm64-musl": "npm:16.4.0" + "@nx/nx-linux-x64-gnu": "npm:16.4.0" + "@nx/nx-linux-x64-musl": "npm:16.4.0" + "@nx/nx-win32-arm64-msvc": "npm:16.4.0" + "@nx/nx-win32-x64-msvc": "npm:16.4.0" + "@parcel/watcher": "npm:2.0.4" + "@yarnpkg/lockfile": "npm:^1.1.0" + "@yarnpkg/parsers": "npm:^3.0.0-rc.18" + "@zkochan/js-yaml": "npm:0.0.6" + axios: "npm:^1.0.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:3.1.0" + cli-spinners: "npm:2.6.1" + cliui: "npm:^7.0.2" + dotenv: "npm:~10.0.0" + enquirer: "npm:~2.3.6" + fast-glob: "npm:3.2.7" + figures: "npm:3.2.0" + flat: "npm:^5.0.2" + fs-extra: "npm:^11.1.0" + glob: "npm:7.1.4" + ignore: "npm:^5.0.4" + js-yaml: "npm:4.1.0" + jsonc-parser: "npm:3.2.0" + lines-and-columns: "npm:~2.0.3" + minimatch: "npm:3.0.5" + npm-run-path: "npm:^4.0.1" + open: "npm:^8.4.0" + semver: "npm:7.5.3" + string-width: "npm:^4.2.3" + strong-log-transformer: "npm:^2.1.0" + tar-stream: "npm:~2.2.0" + tmp: "npm:~0.2.1" + tsconfig-paths: "npm:^4.1.2" + tslib: "npm:^2.3.0" + v8-compile-cache: "npm:2.3.0" + yargs: "npm:^17.6.2" + yargs-parser: "npm:21.1.1" + peerDependencies: + "@swc-node/register": ^1.4.2 + "@swc/core": ^1.2.173 + dependenciesMeta: + "@nx/nx-darwin-arm64": + optional: true + "@nx/nx-darwin-x64": + optional: true + "@nx/nx-freebsd-x64": + optional: true + "@nx/nx-linux-arm-gnueabihf": + optional: true + "@nx/nx-linux-arm64-gnu": + optional: true + "@nx/nx-linux-arm64-musl": + optional: true + "@nx/nx-linux-x64-gnu": + optional: true + "@nx/nx-linux-x64-musl": + optional: true + "@nx/nx-win32-arm64-msvc": + optional: true + "@nx/nx-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc-node/register": + optional: true + "@swc/core": + optional: true + bin: + nx: bin/nx.js + checksum: 10c0/0ac57d17526c3bfa2db6a677598d685e0e560fa5e17580ae55d513f57c246202b38f718d88bece9fb8f3b3c7cf45eda336cab91911c797bc105039e9d778da70 + languageName: node + linkType: hard + +"obj-multiplex@npm:^1.0.0": + version: 1.0.0 + resolution: "obj-multiplex@npm:1.0.0" + dependencies: + end-of-stream: "npm:^1.4.0" + once: "npm:^1.4.0" + readable-stream: "npm:^2.3.3" + checksum: 10c0/914e979ab40fb26cbe4309a5fc1cc6b6a428aeff17a015b9abb1197894ee67f6f02542ffd76d8e275cc40b18adc125bff6e2d6b5090932798c135100c5942007 + languageName: node + linkType: hard + +"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.1": + version: 1.13.2 + resolution: "object-inspect@npm:1.13.2" + checksum: 10c0/b97835b4c91ec37b5fd71add84f21c3f1047d1d155d00c0fcd6699516c256d4fcc6ff17a1aced873197fe447f91a3964178fd2a67a1ee2120cdaf60e81a050b4 + languageName: node + linkType: hard + +"object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object-keys@npm:~0.2.0": + version: 0.2.0 + resolution: "object-keys@npm:0.2.0" + dependencies: + foreach: "npm:~2.0.1" + indexof: "npm:~0.0.1" + is: "npm:~0.2.6" + checksum: 10c0/ebd9a8dfe4cc599f2ad70aa4d11e6beb92cce5493dc55670d7b9f6985734ec03ad527928e6b4981a10aae534433cd94cb863c367bfd44227c1c47e7d3a7184e4 + languageName: node + linkType: hard + +"object-keys@npm:~0.4.0": + version: 0.4.0 + resolution: "object-keys@npm:0.4.0" + checksum: 10c0/91b5eefd2e0374b3d19000d4ea21d94b9f616c28a1e58f1c4f3e1fd6486a9f53ac00aa10e5ef85536be477dbd0f506bdeee6418e5fc86cc91ab0748655b08f5b + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 + languageName: node + linkType: hard + +"object.entries@npm:^1.1.6, object.entries@npm:^1.1.8": + version: 1.1.8 + resolution: "object.entries@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/db9ea979d2956a3bc26c262da4a4d212d36f374652cc4c13efdd069c1a519c16571c137e2893d1c46e1cb0e15c88fd6419eaf410c945f329f09835487d7e65d3 + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.6, object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/cd4327e6c3369cfa805deb4cbbe919bfb7d3aeebf0bcaba291bb568ea7169f8f8cdbcabe2f00b40db0c20cd20f08e11b5f3a5a36fb7dd3fe04850c50db3bf83b + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.3": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + checksum: 10c0/60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c + languageName: node + linkType: hard + +"object.hasown@npm:^1.1.2": + version: 1.1.4 + resolution: "object.hasown@npm:1.1.4" + dependencies: + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/f23187b08d874ef1aea060118c8259eb7f99f93c15a50771d710569534119062b90e087b92952b2d0fb1bb8914d61fb0b43c57fb06f622aaad538fe6868ab987 + languageName: node + linkType: hard + +"object.values@npm:^1.1.5, object.values@npm:^1.1.6, object.values@npm:^1.2.0": + version: 1.2.0 + resolution: "object.values@npm:1.2.0" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/15809dc40fd6c5529501324fec5ff08570b7d70fb5ebbe8e2b3901afec35cf2b3dc484d1210c6c642cd3e7e0a5e18dd1d6850115337fef46bdae14ab0cb18ac3 + languageName: node + linkType: hard + +"obuf@npm:^1.0.0, obuf@npm:^1.1.2": + version: 1.1.2 + resolution: "obuf@npm:1.1.2" + checksum: 10c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 + languageName: node + linkType: hard + +"octal@npm:^1.0.0": + version: 1.0.0 + resolution: "octal@npm:1.0.0" + checksum: 10c0/7ac4b5ae69726dfed2de9df6b11c4769dbb41ac4ee21c81f7d3233cef6bc6e18d3bc0aec9634221e68f62e411e5dd06568b7aa39052046f5b100158acc5c9db9 + languageName: node + linkType: hard + +"ofetch@npm:^1.3.4": + version: 1.4.0 + resolution: "ofetch@npm:1.4.0" + dependencies: + destr: "npm:^2.0.3" + node-fetch-native: "npm:^1.6.4" + ufo: "npm:^1.5.4" + checksum: 10c0/8825bfd1e87117aba462c1e654ba37e09415e6161527a9ef20723ec220b5cd802b52b07a042f6582746240c65bd5fa6fefb289ea5c6d6ea987d2beca3cc0d2f9 + languageName: node + linkType: hard + +"ohash@npm:^1.1.4": + version: 1.1.4 + resolution: "ohash@npm:1.1.4" + checksum: 10c0/73c3bcab2891ee2155ed62bb4c2906f622bf2204a3c9f4616ada8a6a76276bb6b4b4180eaf273b7c7d6232793e4d79d486aab436ebfc0d06d92a997f07122864 + languageName: node + linkType: hard + +"on-exit-leak-free@npm:^0.2.0": + version: 0.2.0 + resolution: "on-exit-leak-free@npm:0.2.0" + checksum: 10c0/d4e1f0bea59f39aa435baaee7d76955527e245538cffc1d7bb0c165ae85e37f67690aa9272247ced17bad76052afdb45faf5ea304a2248e070202d4554c4e30c + languageName: node + linkType: hard + +"on-finished@npm:2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: "npm:1.1.1" + checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 + languageName: node + linkType: hard + +"on-headers@npm:~1.0.2": + version: 1.0.2 + resolution: "on-headers@npm:1.0.2" + checksum: 10c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0, onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: "npm:^4.0.0" + checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c + languageName: node + linkType: hard + +"open@npm:8.4.2, open@npm:^8.0.9, open@npm:^8.4.0, open@npm:~8.4.0": + version: 8.4.2 + resolution: "open@npm:8.4.2" + dependencies: + define-lazy-prop: "npm:^2.0.0" + is-docker: "npm:^2.1.1" + is-wsl: "npm:^2.2.0" + checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 + languageName: node + linkType: hard + +"opener@npm:^1.5.2": + version: 1.5.2 + resolution: "opener@npm:1.5.2" + bin: + opener: bin/opener-bin.js + checksum: 10c0/dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 + languageName: node + linkType: hard + +"optionator@npm:^0.9.1": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"ora@npm:5.4.1, ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + +"ora@npm:^6.3.0": + version: 6.3.1 + resolution: "ora@npm:6.3.1" + dependencies: + chalk: "npm:^5.0.0" + cli-cursor: "npm:^4.0.0" + cli-spinners: "npm:^2.6.1" + is-interactive: "npm:^2.0.0" + is-unicode-supported: "npm:^1.1.0" + log-symbols: "npm:^5.1.0" + stdin-discarder: "npm:^0.1.0" + strip-ansi: "npm:^7.0.1" + wcwidth: "npm:^1.0.1" + checksum: 10c0/f8753e234c9967c86cfb73e7396e1a51ed8771c4921d539af8e8962b32c7928cefef7b3c4ce730a504be72b1437f91cc0523f468927b9fe322498c4edcc50203 + languageName: node + linkType: hard + +"ordered-binary@npm:^1.4.1": + version: 1.5.2 + resolution: "ordered-binary@npm:1.5.2" + checksum: 10c0/3ab35ed17b523131fd57e04bb4d53212013952604f8049dba43f35eacbb30c0d9621b56bdc02906bb8803ce533aaedb4e9f797a64160b0558ac634c6cf7afee1 + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 + languageName: node + linkType: hard + +"ospath@npm:^1.2.2": + version: 1.2.2 + resolution: "ospath@npm:1.2.2" + checksum: 10c0/e485a6ca91964f786163408b093860bf26a9d9704d83ec39ccf463b9f11ea712b780b23b73d1f64536de62c5f66244dd94ed83fc9ffe3c1564dd1eed5cdae923 + languageName: node + linkType: hard + +"p-defer@npm:^3.0.0": + version: 3.0.0 + resolution: "p-defer@npm:3.0.0" + checksum: 10c0/848eb9821785b9a203def23618217ddbfa5cd909574ad0d66aae61a1981c4dcfa084804d6f97abe027bd004643471ddcdc823aa8df60198f791a9bd985e01bee + languageName: node + linkType: hard + +"p-defer@npm:^4.0.0": + version: 4.0.1 + resolution: "p-defer@npm:4.0.1" + checksum: 10c0/592f5bd32f8c6a57f892b00976e5272b3bbbd792b503f4cf3bc22094d08d7a973413c59c15deccff4759d860b38467a08b5b3363e865da6f00f44a031777118c + languageName: node + linkType: hard + +"p-each-series@npm:^2.1.0": + version: 2.2.0 + resolution: "p-each-series@npm:2.2.0" + checksum: 10c0/32a7cce1312bf70f99079db2ff070fc3ee2ed6efe0fa0444616fa38f79730ad09b461d009127d25254c4c865c40b6664e2c656b1a7b2c4781756d9173c974269 + languageName: node + linkType: hard + +"p-fifo@npm:^1.0.0": + version: 1.0.0 + resolution: "p-fifo@npm:1.0.0" + dependencies: + fast-fifo: "npm:^1.0.0" + p-defer: "npm:^3.0.0" + checksum: 10c0/b9e5b9c14c0fea63801c55c116028dce60770ff0be06dff459981c83c014028cf7b671acb12f169a4bdb3e7e1c5ec75c6d69542aebeccd1c13e3ddd764e7450d + languageName: node + linkType: hard + +"p-filter@npm:^2.0.0": + version: 2.1.0 + resolution: "p-filter@npm:2.1.0" + dependencies: + p-map: "npm:^2.0.0" + checksum: 10c0/5ac34b74b3b691c04212d5dd2319ed484f591c557a850a3ffc93a08cb38c4f5540be059c6b10a185773c479ca583a91ea00c7d6c9958c815e6b74d052f356645 + languageName: node + linkType: hard + +"p-finally@npm:^1.0.0": + version: 1.0.0 + resolution: "p-finally@npm:1.0.0" + checksum: 10c0/6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7 + languageName: node + linkType: hard + +"p-is-promise@npm:^3.0.0": + version: 3.0.0 + resolution: "p-is-promise@npm:3.0.0" + checksum: 10c0/17a52c7a59a31a435a4721a7110faeccb7cc9179cf9cd00016b7a9a7156e2c2ed9d8e2efc0142acab74d5064fbb443eaeaf67517cf3668f2a7c93a7effad5bb9 + languageName: node + linkType: hard + +"p-limit@npm:^1.1.0": + version: 1.3.0 + resolution: "p-limit@npm:1.3.0" + dependencies: + p-try: "npm:^1.0.0" + checksum: 10c0/5c1b1d53d180b2c7501efb04b7c817448e10efe1ba46f4783f8951994d5027e4cd88f36ad79af50546682594c4ebd11702ac4b9364c47f8074890e2acad0edee + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: "npm:^1.0.0" + checksum: 10c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + +"p-locate@npm:^2.0.0": + version: 2.0.0 + resolution: "p-locate@npm:2.0.0" + dependencies: + p-limit: "npm:^1.1.0" + checksum: 10c0/82da4be88fb02fd29175e66021610c881938d3cc97c813c71c1a605fac05617d57fd5d3b337494a6106c0edb2a37c860241430851411f1b265108cead34aee67 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: "npm:^4.0.0" + checksum: 10c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + +"p-map@npm:^2.0.0": + version: 2.1.0 + resolution: "p-map@npm:2.1.0" + checksum: 10c0/735dae87badd4737a2dd582b6d8f93e49a1b79eabbc9815a4d63a528d5e3523e978e127a21d784cccb637010e32103a40d2aaa3ab23ae60250b1a820ca752043 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"p-queue@npm:^6.6.2": + version: 6.6.2 + resolution: "p-queue@npm:6.6.2" + dependencies: + eventemitter3: "npm:^4.0.4" + p-timeout: "npm:^3.2.0" + checksum: 10c0/5739ecf5806bbeadf8e463793d5e3004d08bb3f6177bd1a44a005da8fd81bb90f80e4633e1fb6f1dfd35ee663a5c0229abe26aebb36f547ad5a858347c7b0d3e + languageName: node + linkType: hard + +"p-queue@npm:^8.0.1": + version: 8.0.1 + resolution: "p-queue@npm:8.0.1" + dependencies: + eventemitter3: "npm:^5.0.1" + p-timeout: "npm:^6.1.2" + checksum: 10c0/fe185bc8bbd32d17a5f6dba090077b1bb326b008b4ec9b0646c57a32a6984035aa8ece909a6d0de7f6c4640296dc288197f430e7394cdc76a26d862339494616 + languageName: node + linkType: hard + +"p-reduce@npm:^2.0.0": + version: 2.1.0 + resolution: "p-reduce@npm:2.1.0" + checksum: 10c0/27b8ff0fb044995507a06cd6357dffba0f2b98862864745972562a21885d7906ce5c794036d2aaa63ef6303158e41e19aed9f19651dfdafb38548ecec7d0de15 + languageName: node + linkType: hard + +"p-retry@npm:^4.5.0": + version: 4.6.2 + resolution: "p-retry@npm:4.6.2" + dependencies: + "@types/retry": "npm:0.12.0" + retry: "npm:^0.13.1" + checksum: 10c0/d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 + languageName: node + linkType: hard + +"p-timeout@npm:^3.2.0": + version: 3.2.0 + resolution: "p-timeout@npm:3.2.0" + dependencies: + p-finally: "npm:^1.0.0" + checksum: 10c0/524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 + languageName: node + linkType: hard + +"p-timeout@npm:^6.1.2": + version: 6.1.2 + resolution: "p-timeout@npm:6.1.2" + checksum: 10c0/d46b90a9a5fb7c650a5c56dd5cf7102ea9ab6ce998defa2b3d4672789aaec4e2f45b3b0b5a4a3e17a0fb94301ad5dd26da7d8728402e48db2022ad1847594d19 + languageName: node + linkType: hard + +"p-try@npm:^1.0.0": + version: 1.0.0 + resolution: "p-try@npm:1.0.0" + checksum: 10c0/757ba31de5819502b80c447826fac8be5f16d3cb4fbf9bc8bc4971dba0682e84ac33e4b24176ca7058c69e29f64f34d8d9e9b08e873b7b7bb0aa89d620fa224a + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"pacote@npm:15.2.0": + version: 15.2.0 + resolution: "pacote@npm:15.2.0" + dependencies: + "@npmcli/git": "npm:^4.0.0" + "@npmcli/installed-package-contents": "npm:^2.0.1" + "@npmcli/promise-spawn": "npm:^6.0.1" + "@npmcli/run-script": "npm:^6.0.0" + cacache: "npm:^17.0.0" + fs-minipass: "npm:^3.0.0" + minipass: "npm:^5.0.0" + npm-package-arg: "npm:^10.0.0" + npm-packlist: "npm:^7.0.0" + npm-pick-manifest: "npm:^8.0.0" + npm-registry-fetch: "npm:^14.0.0" + proc-log: "npm:^3.0.0" + promise-retry: "npm:^2.0.1" + read-package-json: "npm:^6.0.0" + read-package-json-fast: "npm:^3.0.0" + sigstore: "npm:^1.3.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + bin: + pacote: lib/bin.js + checksum: 10c0/0e680a360d7577df61c36c671dcc9c63a1ef176518a6ec19a3200f91da51205432559e701cba90f0ba6901372765dde68a07ff003474d656887eb09b54f35c5f + languageName: node + linkType: hard + +"pacote@npm:^13.0.3, pacote@npm:^13.6.1, pacote@npm:^13.6.2": + version: 13.6.2 + resolution: "pacote@npm:13.6.2" + dependencies: + "@npmcli/git": "npm:^3.0.0" + "@npmcli/installed-package-contents": "npm:^1.0.7" + "@npmcli/promise-spawn": "npm:^3.0.0" + "@npmcli/run-script": "npm:^4.1.0" + cacache: "npm:^16.0.0" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.1.0" + infer-owner: "npm:^1.0.4" + minipass: "npm:^3.1.6" + mkdirp: "npm:^1.0.4" + npm-package-arg: "npm:^9.0.0" + npm-packlist: "npm:^5.1.0" + npm-pick-manifest: "npm:^7.0.0" + npm-registry-fetch: "npm:^13.0.1" + proc-log: "npm:^2.0.0" + promise-retry: "npm:^2.0.1" + read-package-json: "npm:^5.0.0" + read-package-json-fast: "npm:^2.0.3" + rimraf: "npm:^3.0.2" + ssri: "npm:^9.0.0" + tar: "npm:^6.1.11" + bin: + pacote: lib/bin.js + checksum: 10c0/134d4ae5c3ab4a1745ee24de228796d7222320813d67d26016f6607319d6135d1b4fa2f4200d6d964be89749525b0daff893338237ac6284bb9b4a7a36770696 + languageName: node + linkType: hard + +"pako@npm:^1.0.3": + version: 1.0.11 + resolution: "pako@npm:1.0.11" + checksum: 10c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe + languageName: node + linkType: hard + +"param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76 + languageName: node + linkType: hard + +"parcel@npm:^2.9.3": + version: 2.12.0 + resolution: "parcel@npm:2.12.0" + dependencies: + "@parcel/config-default": "npm:2.12.0" + "@parcel/core": "npm:2.12.0" + "@parcel/diagnostic": "npm:2.12.0" + "@parcel/events": "npm:2.12.0" + "@parcel/fs": "npm:2.12.0" + "@parcel/logger": "npm:2.12.0" + "@parcel/package-manager": "npm:2.12.0" + "@parcel/reporter-cli": "npm:2.12.0" + "@parcel/reporter-dev-server": "npm:2.12.0" + "@parcel/reporter-tracer": "npm:2.12.0" + "@parcel/utils": "npm:2.12.0" + chalk: "npm:^4.1.0" + commander: "npm:^7.0.0" + get-port: "npm:^4.2.0" + bin: + parcel: lib/bin.js + checksum: 10c0/1853858c22cb728d3e3f524df04fbdc42aa27a0c8a3a0dbe2314d618ac13a3fe81836ce1560cdfce17338f61ec238d9b616073c181ab77af56664a0221af1b2a + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.7": + version: 5.1.7 + resolution: "parse-asn1@npm:5.1.7" + dependencies: + asn1.js: "npm:^4.10.1" + browserify-aes: "npm:^1.2.0" + evp_bytestokey: "npm:^1.0.3" + hash-base: "npm:~3.0" + pbkdf2: "npm:^3.1.2" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/05eb5937405c904eb5a7f3633bab1acc11f4ae3478a07ef5c6d81ce88c3c0e505ff51f9c7b935ebc1265c868343793698fc91025755a895d0276f620f95e8a82 + languageName: node + linkType: hard + +"parse-conflict-json@npm:^2.0.1, parse-conflict-json@npm:^2.0.2": + version: 2.0.2 + resolution: "parse-conflict-json@npm:2.0.2" + dependencies: + json-parse-even-better-errors: "npm:^2.3.1" + just-diff: "npm:^5.0.1" + just-diff-apply: "npm:^5.2.0" + checksum: 10c0/7a6a116017cd2629d95eda0325d5928d950c69df412f2c14ca02c9581a606f258404a16a3b9a67a3294ca9e6e12571e65be4f80d3879b53c5b842fbae0495fd4 + languageName: node + linkType: hard + +"parse-duration@npm:^1.0.0": + version: 1.1.0 + resolution: "parse-duration@npm:1.1.0" + checksum: 10c0/26fd83ed8f34b11a6ddb4553c97f4a75decc7a42ffa10c3e998287930cdbd91f27b7958bf5461be3b709bd064245ddccf43566ad8f4daaed2c983f5a7c7f8aed + languageName: node + linkType: hard + +"parse-json@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-json@npm:4.0.0" + dependencies: + error-ex: "npm:^1.3.1" + json-parse-better-errors: "npm:^1.0.1" + checksum: 10c0/8d80790b772ccb1bcea4e09e2697555e519d83d04a77c2b4237389b813f82898943a93ffff7d0d2406203bdd0c30dcf95b1661e3a53f83d0e417f053957bef32 + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"parse-json@npm:^7.0.0": + version: 7.1.1 + resolution: "parse-json@npm:7.1.1" + dependencies: + "@babel/code-frame": "npm:^7.21.4" + error-ex: "npm:^1.3.2" + json-parse-even-better-errors: "npm:^3.0.0" + lines-and-columns: "npm:^2.0.3" + type-fest: "npm:^3.8.0" + checksum: 10c0/a85ebc7430af7763fa52eb456d7efd35c35be5b06f04d8d80c37d0d33312ac6cdff12647acb9c95448dcc8b907dfafa81fb126e094aa132b0abc2a71b9df51d5 + languageName: node + linkType: hard + +"parse-node-version@npm:^1.0.1": + version: 1.0.1 + resolution: "parse-node-version@npm:1.0.1" + checksum: 10c0/999cd3d7da1425c2e182dce82b226c6dc842562d3ed79ec47f5c719c32a7f6c1a5352495b894fc25df164be7f2ede4224758255da9902ddef81f2b77ba46bb2c + languageName: node + linkType: hard + +"parse5-html-rewriting-stream@npm:7.0.0": + version: 7.0.0 + resolution: "parse5-html-rewriting-stream@npm:7.0.0" + dependencies: + entities: "npm:^4.3.0" + parse5: "npm:^7.0.0" + parse5-sax-parser: "npm:^7.0.0" + checksum: 10c0/658d3e2bae038e515bcce6ab6fba9484332d641f3ba82a6450649e1105492fe0a353101dbf751bddfc063509d06b55260bd4567970df3eaaa8391ae79d25ffbf + languageName: node + linkType: hard + +"parse5-sax-parser@npm:^7.0.0": + version: 7.0.0 + resolution: "parse5-sax-parser@npm:7.0.0" + dependencies: + parse5: "npm:^7.0.0" + checksum: 10c0/6b4184354f5ee75c2ec16ab4c7f4703e40d710375ed6c08f82aa425cda22b7ba4a2f43a0925bc6eb6fc88610ab0877693a8d9e10f5a0c21504fd6f97dbd130e9 + languageName: node + linkType: hard + +"parse5@npm:4.0.0": + version: 4.0.0 + resolution: "parse5@npm:4.0.0" + checksum: 10c0/59e240aaea30d9668ba711e35367fe696d8ffadb5a8f1bb4afe8f3d4f47ac26dcfe9e35a8a6ab34e6504b3afe465b7bec302b6bbe0dd6cb13bd1c212b699d9db + languageName: node + linkType: hard + +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: "npm:^4.4.0" + checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 + languageName: node + linkType: hard + +"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 + languageName: node + linkType: hard + +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8 + languageName: node + linkType: hard + +"path-browserify@npm:1.0.1, path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 + languageName: node + linkType: hard + +"path-case@npm:^3.0.4": + version: 3.0.4 + resolution: "path-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/b6b14637228a558793f603aaeb2fcd981e738b8b9319421b713532fba96d75aa94024b9f6b9ae5aa33d86755144a5b36697d28db62ae45527dbd672fcc2cf0b7 + languageName: node + linkType: hard + +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 10c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: 10c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1, path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-scurry@npm:^2.0.0": + version: 2.0.0 + resolution: "path-scurry@npm:2.0.0" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c0/3da4adedaa8e7ef8d6dc4f35a0ff8f05a9b4d8365f2b28047752b62d4c1ad73eec21e37b1579ef2d075920157856a3b52ae8309c480a6f1a8bbe06ff8e52b33c + languageName: node + linkType: hard + +"path-to-regexp@npm:0.1.10": + version: 0.1.10 + resolution: "path-to-regexp@npm:0.1.10" + checksum: 10c0/34196775b9113ca6df88e94c8d83ba82c0e1a2063dd33bfe2803a980da8d49b91db8104f49d5191b44ea780d46b8670ce2b7f4a5e349b0c48c6779b653f1afe4 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"pathe@npm:^1.1.1, pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 + languageName: node + linkType: hard + +"pbkdf2@npm:^3.0.3, pbkdf2@npm:^3.0.9, pbkdf2@npm:^3.1.2": + version: 3.1.2 + resolution: "pbkdf2@npm:3.1.2" + dependencies: + create-hash: "npm:^1.1.2" + create-hmac: "npm:^1.1.4" + ripemd160: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd + languageName: node + linkType: hard + +"pend@npm:~1.2.0": + version: 1.2.0 + resolution: "pend@npm:1.2.0" + checksum: 10c0/8a87e63f7a4afcfb0f9f77b39bb92374afc723418b9cb716ee4257689224171002e07768eeade4ecd0e86f1fa3d8f022994219fb45634f2dbd78c6803e452458 + languageName: node + linkType: hard + +"performance-now@npm:^2.1.0": + version: 2.1.0 + resolution: "performance-now@npm:2.1.0" + checksum: 10c0/22c54de06f269e29f640e0e075207af57de5052a3d15e360c09b9a8663f393f6f45902006c1e71aa8a5a1cdfb1a47fe268826f8496d6425c362f00f5bc3e85d9 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": + version: 1.1.0 + resolution: "picocolors@npm:1.1.0" + checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023 + languageName: node + linkType: hard + +"picomatch@npm:2.3.1, picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"pify@npm:^2.0.0, pify@npm:^2.2.0, pify@npm:^2.3.0": + version: 2.3.0 + resolution: "pify@npm:2.3.0" + checksum: 10c0/551ff8ab830b1052633f59cb8adc9ae8407a436e06b4a9718bcb27dc5844b83d535c3a8512b388b6062af65a98c49bdc0dd523d8b2617b188f7c8fee457158dc + languageName: node + linkType: hard + +"pify@npm:^3.0.0": + version: 3.0.0 + resolution: "pify@npm:3.0.0" + checksum: 10c0/fead19ed9d801f1b1fcd0638a1ac53eabbb0945bf615f2f8806a8b646565a04a1b0e7ef115c951d225f042cca388fdc1cd3add46d10d1ed6951c20bd2998af10 + languageName: node + linkType: hard + +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf + languageName: node + linkType: hard + +"pify@npm:^5.0.0": + version: 5.0.0 + resolution: "pify@npm:5.0.0" + checksum: 10c0/9f6f3cd1f159652692f514383efe401a06473af35a699962230ad1c4c9796df5999961461fc1a3b81eed8e3e74adb8bd032474fb3f93eb6bdbd9f33328da1ed2 + languageName: node + linkType: hard + +"pinkie-promise@npm:^2.0.0": + version: 2.0.1 + resolution: "pinkie-promise@npm:2.0.1" + dependencies: + pinkie: "npm:^2.0.0" + checksum: 10c0/11b5e5ce2b090c573f8fad7b517cbca1bb9a247587306f05ae71aef6f9b2cd2b923c304aa9663c2409cfde27b367286179f1379bc4ec18a3fbf2bb0d473b160a + languageName: node + linkType: hard + +"pinkie@npm:^2.0.0": + version: 2.0.4 + resolution: "pinkie@npm:2.0.4" + checksum: 10c0/25228b08b5597da42dc384221aa0ce56ee0fbf32965db12ba838e2a9ca0193c2f0609c45551ee077ccd2060bf109137fdb185b00c6d7e0ed7e35006d20fdcbc6 + languageName: node + linkType: hard + +"pino-abstract-transport@npm:v0.5.0": + version: 0.5.0 + resolution: "pino-abstract-transport@npm:0.5.0" + dependencies: + duplexify: "npm:^4.1.2" + split2: "npm:^4.0.0" + checksum: 10c0/0d0e30399028ec156642b4cdfe1a040b9022befdc38e8f85935d1837c3da6050691888038433f88190d1a1eff5d90abe17ff7e6edffc09baa2f96e51b6808183 + languageName: node + linkType: hard + +"pino-std-serializers@npm:^4.0.0": + version: 4.0.0 + resolution: "pino-std-serializers@npm:4.0.0" + checksum: 10c0/9e8ccac9ce04a27ccc7aa26481d431b9e037d866b101b89d895c60b925baffb82685e84d5c29b05d8e3d7c146d766a9b08949cb24ab1ec526a16134c9962d649 + languageName: node + linkType: hard + +"pino@npm:7.11.0": + version: 7.11.0 + resolution: "pino@npm:7.11.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + fast-redact: "npm:^3.0.0" + on-exit-leak-free: "npm:^0.2.0" + pino-abstract-transport: "npm:v0.5.0" + pino-std-serializers: "npm:^4.0.0" + process-warning: "npm:^1.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.1.0" + safe-stable-stringify: "npm:^2.1.0" + sonic-boom: "npm:^2.2.1" + thread-stream: "npm:^0.15.1" + bin: + pino: bin.js + checksum: 10c0/4cc1ed9d25a4bc5d61c836a861279fa0039159b8f2f37ec337e50b0a61f3980dab5d2b1393daec26f68a19c423262649f0818654c9ad102c35310544a202c62c + languageName: node + linkType: hard + +"pirates@npm:^4.0.4": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 + languageName: node + linkType: hard + +"piscina@npm:3.2.0": + version: 3.2.0 + resolution: "piscina@npm:3.2.0" + dependencies: + eventemitter-asyncresource: "npm:^1.0.0" + hdr-histogram-js: "npm:^2.0.1" + hdr-histogram-percentiles-obj: "npm:^3.0.0" + nice-napi: "npm:^1.0.2" + dependenciesMeta: + nice-napi: + optional: true + checksum: 10c0/9676f5708f3eaf2f71121214a4989f339c65efa9197f8c33511cb5c238d54e14f701c0e421bdbfb17aa5fce37e142522b8d6a4c8a73da635757f6e66567b45f9 + languageName: node + linkType: hard + +"pkg-conf@npm:^2.1.0": + version: 2.1.0 + resolution: "pkg-conf@npm:2.1.0" + dependencies: + find-up: "npm:^2.0.0" + load-json-file: "npm:^4.0.0" + checksum: 10c0/e1474a4f7714ee78204b4a7f2316dec9e59887762bdc126ebd0eb701bbde7c6a6da65c4dc9c2a7c1eaeee49914009bf4a4368f5d9894c596ddf812ff982fdb05 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: "npm:^6.3.0" + checksum: 10c0/1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + languageName: node + linkType: hard + +"pkg-types@npm:^1.1.1": + version: 1.2.0 + resolution: "pkg-types@npm:1.2.0" + dependencies: + confbox: "npm:^0.1.7" + mlly: "npm:^1.7.1" + pathe: "npm:^1.1.2" + checksum: 10c0/111cf6ad4235438821ea195a0d70570b1bd36a71d094d258349027c9c304dea8b4f9669c9f7ce813f9a48a02942fb0d7fe9809127dbe7bb4b18a8de71583a081 + languageName: node + linkType: hard + +"pngjs@npm:^5.0.0": + version: 5.0.0 + resolution: "pngjs@npm:5.0.0" + checksum: 10c0/c074d8a94fb75e2defa8021e85356bf7849688af7d8ce9995b7394d57cd1a777b272cfb7c4bce08b8d10e71e708e7717c81fd553a413f21840c548ec9d4893c6 + languageName: node + linkType: hard + +"pony-cause@npm:^2.1.10": + version: 2.1.11 + resolution: "pony-cause@npm:2.1.11" + checksum: 10c0/d5db6489ec42f8fcce0fd9ad2052be98cd8f63814bf32819694ec1f4c6a01bc3be6181050d83bc79e95272174a5b9776d1c2af1fa79ef51e0ccc0f97c22b1420 + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd + languageName: node + linkType: hard + +"postcss-calc@npm:^8.2.3": + version: 8.2.4 + resolution: "postcss-calc@npm:8.2.4" + dependencies: + postcss-selector-parser: "npm:^6.0.9" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.2 + checksum: 10c0/8518a429488c3283ff1560c83a511f6f772329bc61d88875eb7c83e13a8683b7ccbdccaa9946024cf1553da3eacd2f40fcbcebf1095f7fdeb432bf86bc6ba6ba + languageName: node + linkType: hard + +"postcss-colormin@npm:^5.3.1": + version: 5.3.1 + resolution: "postcss-colormin@npm:5.3.1" + dependencies: + browserslist: "npm:^4.21.4" + caniuse-api: "npm:^3.0.0" + colord: "npm:^2.9.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/c4ca6f335dd992dc8e3df24bffc3495c4e504eba8489c81cb6836fdce3203f423cf4c0b640c4b63c586f588c59d82adb5313c3c5d1a68113896d18ed71caa462 + languageName: node + linkType: hard + +"postcss-convert-values@npm:^5.1.3": + version: 5.1.3 + resolution: "postcss-convert-values@npm:5.1.3" + dependencies: + browserslist: "npm:^4.21.4" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/cd10a81781a12487b2921ff84a1a068e948a1956b9539a284c202abecf4cacdd3e106eb026026b22dbf70933f4315c824c111f6b71f56c355e47b842ca9b1dec + languageName: node + linkType: hard + +"postcss-discard-comments@npm:^5.1.2": + version: 5.1.2 + resolution: "postcss-discard-comments@npm:5.1.2" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/cb5ba81623c498e18d406138e7d27d69fc668802a1139a8de69d28e80b3fe222cda7b634940512cae78d04f0c78afcd15d92bcf80e537c6c85fa8ff9cd61d00f + languageName: node + linkType: hard + +"postcss-discard-duplicates@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-discard-duplicates@npm:5.1.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/3d3a49536c56097c06b4f085412e0cda0854fac1c559563ccb922d9fab6305ff13058cd6fee422aa66c1d7e466add4e7672d7ae2ff551a4af6f1a8d2142d471f + languageName: node + linkType: hard + +"postcss-discard-empty@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-discard-empty@npm:5.1.1" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/36c8b2197af836dbd93168c72cde4edc1f10fe00e564824119da076d3764909745bb60e4ada04052322e26872d1bce6a37c56815f1c48c813a21adca1a41fbdc + languageName: node + linkType: hard + +"postcss-discard-overridden@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-discard-overridden@npm:5.1.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/7d3fc0b0d90599606fc083327a7c24390f90270a94a0119af4b74815d518948581579281f63b9bfa62e2644edf59bc9e725dc04ea5ba213f697804f3fb4dd8dc + languageName: node + linkType: hard + +"postcss-import@npm:~14.1.0": + version: 14.1.0 + resolution: "postcss-import@npm:14.1.0" + dependencies: + postcss-value-parser: "npm:^4.0.0" + read-cache: "npm:^1.0.0" + resolve: "npm:^1.1.7" + peerDependencies: + postcss: ^8.0.0 + checksum: 10c0/0552f48b6849d48b25213e8bfb4b2ae10fcf061224ba17b5c008d8b8de69b9b85442bff6c7ac2a313aec32f14fd000f57720b06f82dc6e9f104405b221a741db + languageName: node + linkType: hard + +"postcss-load-config@npm:^3.0.0": + version: 3.1.4 + resolution: "postcss-load-config@npm:3.1.4" + dependencies: + lilconfig: "npm:^2.0.5" + yaml: "npm:^1.10.2" + peerDependencies: + postcss: ">=8.0.9" + ts-node: ">=9.0.0" + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + checksum: 10c0/7d2cc6695c2fc063e4538316d651a687fdb55e48db453ff699de916a6ee55ab68eac2b120c28a6b8ca7aa746a588888351b810a215b5cd090eabea62c5762ede + languageName: node + linkType: hard + +"postcss-loader@npm:7.3.2": + version: 7.3.2 + resolution: "postcss-loader@npm:7.3.2" + dependencies: + cosmiconfig: "npm:^8.1.3" + jiti: "npm:^1.18.2" + klona: "npm:^2.0.6" + semver: "npm:^7.3.8" + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + checksum: 10c0/635975cd6620a251eaf19ae27e13fcb777391d68083c71551467f3fd1aec80648d444a46c9c91018e0eb0e6eb3d02cdba44ffe15eff41cf48756092766ebec4b + languageName: node + linkType: hard + +"postcss-loader@npm:^6.1.1": + version: 6.2.1 + resolution: "postcss-loader@npm:6.2.1" + dependencies: + cosmiconfig: "npm:^7.0.0" + klona: "npm:^2.0.5" + semver: "npm:^7.3.5" + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + checksum: 10c0/736a1bf43a3e09e2351b5cc97cc26790a1c3261412c9dee063f3f6f2969a6ff7d8d194d9adcad01cee1afd1de071482318d9699e6157b67d46b3dccf3be1b58b + languageName: node + linkType: hard + +"postcss-merge-longhand@npm:^5.1.7": + version: 5.1.7 + resolution: "postcss-merge-longhand@npm:5.1.7" + dependencies: + postcss-value-parser: "npm:^4.2.0" + stylehacks: "npm:^5.1.1" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/4d9f44b03f19522cc81ae4f5b1f2a9ef2db918dbd8b3042d4f1b2461b2230b8ec1269334db6a67a863ba68f64cabd712e6e45340ddb22a3fc03cd34df69d2bf0 + languageName: node + linkType: hard + +"postcss-merge-rules@npm:^5.1.4": + version: 5.1.4 + resolution: "postcss-merge-rules@npm:5.1.4" + dependencies: + browserslist: "npm:^4.21.4" + caniuse-api: "npm:^3.0.0" + cssnano-utils: "npm:^3.1.0" + postcss-selector-parser: "npm:^6.0.5" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/e7686cdda052071bf98810ad381e26145c43a2286f9540f04f97ef93101604b78d478dd555db91e5f73751bb353c283ba75c2fcb16a3751ac7d93dc6a0130c41 + languageName: node + linkType: hard + +"postcss-minify-font-values@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-minify-font-values@npm:5.1.0" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/7aa4f93a853b657f79a8b28d0e924cafce3720086d9da02ce04b8b2f8de42e18ce32c8f7f1078390fb5ec82468e2d8e771614387cea3563f05fd9fa1798e1c59 + languageName: node + linkType: hard + +"postcss-minify-gradients@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-minify-gradients@npm:5.1.1" + dependencies: + colord: "npm:^2.9.1" + cssnano-utils: "npm:^3.1.0" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/bcb2802d7c8f0f76c7cff089884844f26c24b95f35c3ec951d7dec8c212495d1873d6ba62d6225ce264570e8e0668e271f9bc79bb6f5d2429c1f8933f4e3021d + languageName: node + linkType: hard + +"postcss-minify-params@npm:^5.1.4": + version: 5.1.4 + resolution: "postcss-minify-params@npm:5.1.4" + dependencies: + browserslist: "npm:^4.21.4" + cssnano-utils: "npm:^3.1.0" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/debce6f0f7dd9af69b4bb9e467ea1ccccff2d849b6020461a2b9741c0c137340e6076c245dc2e83880180eb2e82936280fa31dfe8608e5a2e3618f3d864314c5 + languageName: node + linkType: hard + +"postcss-minify-selectors@npm:^5.2.1": + version: 5.2.1 + resolution: "postcss-minify-selectors@npm:5.2.1" + dependencies: + postcss-selector-parser: "npm:^6.0.5" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/f3f4ec110f5f697cfc9dde3e491ff10aa07509bf33cc940aa539e4b5b643d1b9f8bb97f8bb83d05fc96f5eeb220500ebdeffbde513bd176c0671e21c2c96fab9 + languageName: node + linkType: hard + +"postcss-modules-extract-imports@npm:^3.0.0, postcss-modules-extract-imports@npm:^3.1.0": + version: 3.1.0 + resolution: "postcss-modules-extract-imports@npm:3.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/402084bcab376083c4b1b5111b48ec92974ef86066f366f0b2d5b2ac2b647d561066705ade4db89875a13cb175b33dd6af40d16d32b2ea5eaf8bac63bd2bf219 + languageName: node + linkType: hard + +"postcss-modules-local-by-default@npm:^4.0.0, postcss-modules-local-by-default@npm:^4.0.3, postcss-modules-local-by-default@npm:^4.0.5": + version: 4.0.5 + resolution: "postcss-modules-local-by-default@npm:4.0.5" + dependencies: + icss-utils: "npm:^5.0.0" + postcss-selector-parser: "npm:^6.0.2" + postcss-value-parser: "npm:^4.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/f4ad35abeb685ecb25f80c93d9fe23c8b89ee45ac4185f3560e701b4d7372f9b798577e79c5ed03b6d9c80bc923b001210c127c04ced781f43cda9e32b202a5b + languageName: node + linkType: hard + +"postcss-modules-scope@npm:^3.0.0, postcss-modules-scope@npm:^3.2.0": + version: 3.2.0 + resolution: "postcss-modules-scope@npm:3.2.0" + dependencies: + postcss-selector-parser: "npm:^6.0.4" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/a2f5ffe372169b3feb8628cd785eb748bf12e344cfa57bce9e5cdc4fa5adcdb40d36daa86bb35dad53427703b185772aad08825b5783f745fcb1b6039454a84b + languageName: node + linkType: hard + +"postcss-modules-values@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-modules-values@npm:4.0.0" + dependencies: + icss-utils: "npm:^5.0.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc + languageName: node + linkType: hard + +"postcss-modules@npm:^4.0.0": + version: 4.3.1 + resolution: "postcss-modules@npm:4.3.1" + dependencies: + generic-names: "npm:^4.0.0" + icss-replace-symbols: "npm:^1.1.0" + lodash.camelcase: "npm:^4.3.0" + postcss-modules-extract-imports: "npm:^3.0.0" + postcss-modules-local-by-default: "npm:^4.0.0" + postcss-modules-scope: "npm:^3.0.0" + postcss-modules-values: "npm:^4.0.0" + string-hash: "npm:^1.1.1" + peerDependencies: + postcss: ^8.0.0 + checksum: 10c0/944e52c67900869c4f5bbdec7c91b31564ce80aa6addb2eea61e11d336d9f84873de17f10782fa0bab9afae491ce24590a83dac6d825fc4eff625cc85bbbca02 + languageName: node + linkType: hard + +"postcss-normalize-charset@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-charset@npm:5.1.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/aa481584d4db48e0dbf820f992fa235e6c41ff3d4701a62d349f33c1ad4c5c7dcdea3096db9ff2a5c9497e9bed2186d594ccdb1b42d57b30f58affba5829ad9c + languageName: node + linkType: hard + +"postcss-normalize-display-values@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-display-values@npm:5.1.0" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/70b164fda885c097c02c98914fba4cd19b2382ff5f85f77e5315d88a1d477b4803f0f271d95a38e044e2a6c3b781c5c9bfb83222fc577199f2aeb0b8f4254e2f + languageName: node + linkType: hard + +"postcss-normalize-positions@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-positions@npm:5.1.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/910d58991fd38a7cf6ed6471e6fa4a96349690ad1a99a02e8cac46d76ba5045f2fca453088b68b05ff665afd96dc617c4674c68acaeabbe83f502e4963fb78b1 + languageName: node + linkType: hard + +"postcss-normalize-repeat-style@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-repeat-style@npm:5.1.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/57c3817a2107ebb17e4ceee3831d230c72a3ccc7650f4d5f12aa54f6ea766777401f4f63b2615b721350b2e8c7ae0b0bbc3f1c5ad4e7fa737c9efb92cfa0cbb0 + languageName: node + linkType: hard + +"postcss-normalize-string@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-string@npm:5.1.0" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/a5e9979998f478d385ddff865bdd8a4870af69fa8c91c9398572a299ff39b39a6bda922a48fab0d2cddc639f30159c39baaed880ed7d13cd27cc64eaa9400b3b + languageName: node + linkType: hard + +"postcss-normalize-timing-functions@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-timing-functions@npm:5.1.0" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/afb34d8e313004ae8cd92910bf1a6eb9885f29ae803cd9032b6dfe7b67a9ad93f800976f10e55170b2b08fe9484825e9272629971186812c2764c73843268237 + languageName: node + linkType: hard + +"postcss-normalize-unicode@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-unicode@npm:5.1.1" + dependencies: + browserslist: "npm:^4.21.4" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/c102888d488d05c53ab10ffcd4e0efb892ef0cc2f9b0abe9c9b175a2d7a9c226981ca6806ed9e5c1b82a8190f2b3a8342a6de800f019b417130661b0787ff6d7 + languageName: node + linkType: hard + +"postcss-normalize-url@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-url@npm:5.1.0" + dependencies: + normalize-url: "npm:^6.0.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/a016cefd1ef80f74ef9dbed50593d3b533101e93aaadfc292896fddd8d6c3eb732a9fc5cb2e0d27f79c1f60f0fdfc40b045a494b514451e9610c6acf9392eb98 + languageName: node + linkType: hard + +"postcss-normalize-whitespace@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-whitespace@npm:5.1.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/d7b53dd90fe369bfb9838a40096db904a41f50dadfd04247ec07d7ab5588c3d4e70d1c7f930523bd061cb74e6683cef45c6e6c4eb57ea174ee3fc99f3de222d1 + languageName: node + linkType: hard + +"postcss-ordered-values@npm:^5.1.3": + version: 5.1.3 + resolution: "postcss-ordered-values@npm:5.1.3" + dependencies: + cssnano-utils: "npm:^3.1.0" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/55abfbd2c7267eefed62a881ed0b5c0c98409c50a589526a3ebb9f8d879979203e523b8888fa84732bdd1ac887f721287a037002fa70c27c8d33f1bcbae9d9c6 + languageName: node + linkType: hard + +"postcss-reduce-initial@npm:^5.1.2": + version: 5.1.2 + resolution: "postcss-reduce-initial@npm:5.1.2" + dependencies: + browserslist: "npm:^4.21.4" + caniuse-api: "npm:^3.0.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/ddb2ce61c8d0997184f08200eafdf32b3c67e88228fee960f5e2010c32da0c1d8ea07712585bf2b3aaa15f583066401d45db2c1131527c5116ca6794ebebd865 + languageName: node + linkType: hard + +"postcss-reduce-transforms@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-reduce-transforms@npm:5.1.0" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/caefaeb78652ad8701b94e91500e38551255e4899fa298a7357519a36cbeebae088eab4535e00f17675a1230f448c4a7077045639d496da4614a46bc41df4add + languageName: node + linkType: hard + +"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": + version: 6.1.2 + resolution: "postcss-selector-parser@npm:6.1.2" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10c0/523196a6bd8cf660bdf537ad95abd79e546d54180f9afb165a4ab3e651ac705d0f8b8ce6b3164fb9e3279ce482c5f751a69eb2d3a1e8eb0fd5e82294fb3ef13e + languageName: node + linkType: hard + +"postcss-svgo@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-svgo@npm:5.1.0" + dependencies: + postcss-value-parser: "npm:^4.2.0" + svgo: "npm:^2.7.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/309634a587e38fef244648bc9cd1817e12144868d24f1173d87b1edc14a4a7fca614962b2cb9d93f4801e11bd8d676083986ad40ebab4438cb84731ce1571994 + languageName: node + linkType: hard + +"postcss-unique-selectors@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-unique-selectors@npm:5.1.1" + dependencies: + postcss-selector-parser: "npm:^6.0.5" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/484f6409346d6244c134c5cdcd62f4f2751b269742f95222f13d8bac5fb224471ffe04e28a354670cbe0bdc2707778ead034fc1b801b473ffcbea5436807de30 + languageName: node + linkType: hard + +"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 + languageName: node + linkType: hard + +"postcss@npm:8.4.14": + version: 8.4.14 + resolution: "postcss@npm:8.4.14" + dependencies: + nanoid: "npm:^3.3.4" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.0.2" + checksum: 10c0/2a4cfa28e2f1bfd358313501f7771bd596e494487c7b735c492e2f8b1faf493d24fcb43e2e6ad825863fc65a77abb949ca8f228602ae46a022f02dc812c4ac8b + languageName: node + linkType: hard + +"postcss@npm:8.4.24": + version: 8.4.24 + resolution: "postcss@npm:8.4.24" + dependencies: + nanoid: "npm:^3.3.6" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.0.2" + checksum: 10c0/37704ee03a2cbdebf2c99a76d399d6e0250742b5f6c699a12d475c84cedfcbeb26e180d9c780e0219dd2ad70cac963ceaf1d6763a1aec3e63d0c19fceb0eab23 + languageName: node + linkType: hard + +"postcss@npm:^8.2.14, postcss@npm:^8.3.5, postcss@npm:^8.4.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.33": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.1.0" + source-map-js: "npm:^1.2.1" + checksum: 10c0/929f68b5081b7202709456532cee2a145c1843d391508c5a09de2517e8c4791638f71dd63b1898dba6712f8839d7a6da046c72a5e44c162e908f5911f57b5f44 + languageName: node + linkType: hard + +"posthtml-parser@npm:^0.10.1": + version: 0.10.2 + resolution: "posthtml-parser@npm:0.10.2" + dependencies: + htmlparser2: "npm:^7.1.1" + checksum: 10c0/90c7c2e0892c18577a56a5dd60a54c40feb0be7c712a79f711e1730b5eea468f8d521d387af9f08d78e6bca9df613286c3ff8a95ac9426671cbe9021d7ec2ae5 + languageName: node + linkType: hard + +"posthtml-parser@npm:^0.11.0": + version: 0.11.0 + resolution: "posthtml-parser@npm:0.11.0" + dependencies: + htmlparser2: "npm:^7.1.1" + checksum: 10c0/89bf980a60124790f776a9f21aec0f154eba5412d16f0f3a95de7a53d31b9acb9264bf317ab40c080413e3018a8e65c86278e6e8c0731c8e0363418982ed4296 + languageName: node + linkType: hard + +"posthtml-render@npm:^3.0.0": + version: 3.0.0 + resolution: "posthtml-render@npm:3.0.0" + dependencies: + is-json: "npm:^2.0.1" + checksum: 10c0/7adb9c20d0908663019c3c2dede3f6cc8bd19c17c81a1f42a1d8772195be4e5252aeb72a764e92d3424aebfa8c5d35c7ef1ec25243a802d35897aa928858505b + languageName: node + linkType: hard + +"posthtml@npm:^0.16.4, posthtml@npm:^0.16.5": + version: 0.16.6 + resolution: "posthtml@npm:0.16.6" + dependencies: + posthtml-parser: "npm:^0.11.0" + posthtml-render: "npm:^3.0.0" + checksum: 10c0/0505cb70ece051206ffa932394181372be6390a974fd2f50e4e6fdd5d11e41feffba9a5f5e22809ca42899f79bd489d53ceac1d7ad0d782db9521b578e5b7f5a + languageName: node + linkType: hard + +"postmate@npm:1.5.2": + version: 1.5.2 + resolution: "postmate@npm:1.5.2" + checksum: 10c0/a6ef50768bd99b56f8bf8f961fcadca4b96c2748b1639d225d9bb9b15b2cd5af6c4aed91e2c05c41c666fdfc0010d1011ea0e3f9b97c7d1c7b687ee83227ebd5 + languageName: node + linkType: hard + +"preact@npm:^10.16.0": + version: 10.24.2 + resolution: "preact@npm:10.24.2" + checksum: 10c0/d1d22c5e1abc10eb8f83501857ef22c54a3fda2d20449d06f5b3c7d5ae812bd702c16c05b672138b8906504f9c893e072e9cebcbcada8cac320edf36265788fb + languageName: node + linkType: hard + +"prebuild-install@npm:^7.1.1": + version: 7.1.2 + resolution: "prebuild-install@npm:7.1.2" + dependencies: + detect-libc: "npm:^2.0.0" + expand-template: "npm:^2.0.3" + github-from-package: "npm:0.0.0" + minimist: "npm:^1.2.3" + mkdirp-classic: "npm:^0.5.3" + napi-build-utils: "npm:^1.0.1" + node-abi: "npm:^3.3.0" + pump: "npm:^3.0.0" + rc: "npm:^1.2.7" + simple-get: "npm:^4.0.0" + tar-fs: "npm:^2.0.0" + tunnel-agent: "npm:^0.6.0" + bin: + prebuild-install: bin.js + checksum: 10c0/e64868ba9ef2068fd7264f5b03e5298a901e02a450acdb1f56258d88c09dea601eefdb3d1dfdff8513fdd230a92961712be0676192626a3b4d01ba154d48bdd3 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" + dependencies: + fast-diff: "npm:^1.1.2" + checksum: 10c0/81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab + languageName: node + linkType: hard + +"prettier@npm:2.7.1": + version: 2.7.1 + resolution: "prettier@npm:2.7.1" + bin: + prettier: bin-prettier.js + checksum: 10c0/359d2b7ecf36bd52924a48331cae506d335f18637fde6c686212f952b9ce678ce9f554a80571049b36ec2897a8a6c40094b776dea371cc5c04c481cf5b78504b + languageName: node + linkType: hard + +"pretty-bytes@npm:^5.3.0, pretty-bytes@npm:^5.6.0": + version: 5.6.0 + resolution: "pretty-bytes@npm:5.6.0" + checksum: 10c0/f69f494dcc1adda98dbe0e4a36d301e8be8ff99bfde7a637b2ee2820e7cb583b0fc0f3a63b0e3752c01501185a5cf38602c7be60da41bdf84ef5b70e89c370f3 + languageName: node + linkType: hard + +"pretty-format@npm:^27.0.2": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^17.0.1" + checksum: 10c0/0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + +"proc-log@npm:^2.0.0, proc-log@npm:^2.0.1": + version: 2.0.1 + resolution: "proc-log@npm:2.0.1" + checksum: 10c0/701c501429775ce34cec28ef6a1c976537274b42917212fb8a5975ebcecb0a85612907fd7f99ff28ff4c2112bb84a0f4322fc9b9e1e52a8562fcbb1d5b3ce608 + languageName: node + linkType: hard + +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc + languageName: node + linkType: hard + +"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"process-warning@npm:^1.0.0": + version: 1.0.0 + resolution: "process-warning@npm:1.0.0" + checksum: 10c0/43ec4229d64eb5c58340c8aacade49eb5f6fd513eae54140abf365929ca20987f0a35c5868125e2b583cad4de8cd257beb5667d9cc539d9190a7a4c3014adf22 + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 + languageName: node + linkType: hard + +"progress-events@npm:^1.0.0": + version: 1.0.1 + resolution: "progress-events@npm:1.0.1" + checksum: 10c0/27d998de678ca91ea8fdfba4c39c1e393144e658663fcdab344aacc4a3c7d420d2007eaba9e981c1b0894d4b1df05facfc90f5844e1c6518dcf95330fd09473d + languageName: node + linkType: hard + +"promise-all-reject-late@npm:^1.0.0": + version: 1.0.1 + resolution: "promise-all-reject-late@npm:1.0.1" + checksum: 10c0/f1af0c7b0067e84d64751148ee5bb6c3e84f4a4d1316d6fe56261e1d2637cf71b49894bcbd2c6daf7d45afb1bc99efc3749be277c3e0518b70d0c5a29d037011 + languageName: node + linkType: hard + +"promise-call-limit@npm:^1.0.1": + version: 1.0.2 + resolution: "promise-call-limit@npm:1.0.2" + checksum: 10c0/500aed321d7b9212da403db369551d7190c96c8937c3b2d15c6097d1037b17fb802c7decfbc8ba6bb937f1cc1ea291e5eba10ed9ea76adc0f398ab9f7d174a58 + languageName: node + linkType: hard + +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"promise.series@npm:^0.2.0": + version: 0.2.0 + resolution: "promise.series@npm:0.2.0" + checksum: 10c0/18985b5bfd6cd4359572c98d590c71c845b8d32e035ea318549b26909e08e07b4b0f119daf74a08815160b243aa7d5e9b7567117c20ed06b3e0ff2a918e016fe + languageName: node + linkType: hard + +"prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + languageName: node + linkType: hard + +"promzard@npm:^0.3.0": + version: 0.3.0 + resolution: "promzard@npm:0.3.0" + dependencies: + read: "npm:1" + checksum: 10c0/7fd8dbcd9764b35092da65867cc60fdcf2ea85d77e8ed1ae348ec0af1a22616f74053ccf8dad7d8de01e1e3aafe349d77ef56653c2db3791589ac2a8ef485149 + languageName: node + linkType: hard + +"prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + languageName: node + linkType: hard + +"proto-list@npm:~1.2.1": + version: 1.2.4 + resolution: "proto-list@npm:1.2.4" + checksum: 10c0/b9179f99394ec8a68b8afc817690185f3b03933f7b46ce2e22c1930dc84b60d09f5ad222beab4e59e58c6c039c7f7fcf620397235ef441a356f31f9744010e12 + languageName: node + linkType: hard + +"protobufjs@npm:^7.0.0": + version: 7.4.0 + resolution: "protobufjs@npm:7.4.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/node": "npm:>=13.7.0" + long: "npm:^5.0.0" + checksum: 10c0/a5460a63fe596523b9a067cbce39a6b310d1a71750fda261f076535662aada97c24450e18c5bc98a27784f70500615904ff1227e1742183509f0db4fdede669b + languageName: node + linkType: hard + +"proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: "npm:0.2.0" + ipaddr.js: "npm:1.9.1" + checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 + languageName: node + linkType: hard + +"proxy-compare@npm:2.5.1": + version: 2.5.1 + resolution: "proxy-compare@npm:2.5.1" + checksum: 10c0/116fc69ae9a6bb3654e6907fb09b73e84aa47c89275ca52648fc1d2ac8b35dbf54daa8bab078d7a735337c928e87eb52059e705434adf14989bbe6c5dcdd08fa + languageName: node + linkType: hard + +"proxy-from-env@npm:1.0.0": + version: 1.0.0 + resolution: "proxy-from-env@npm:1.0.0" + checksum: 10c0/c64df9b21f7f820dc882cd6f7f81671840acd28b9688ee3e3e6af47a56ec7f0edcabe5bc96b32b26218b35eeff377bcc27ac27f89b6b21401003e187ff13256f + languageName: node + linkType: hard + +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b + languageName: node + linkType: hard + +"prr@npm:~0.0.0": + version: 0.0.0 + resolution: "prr@npm:0.0.0" + checksum: 10c0/cbbf5b6860b978eb0f84e13f46086adc1c8e997fe5198a85577c9208269dde9c905577c1c3cb4684686a323ce05de57c2f6584e14fc63a3f55c02e0806e7e7af + languageName: node + linkType: hard + +"prr@npm:~1.0.1": + version: 1.0.1 + resolution: "prr@npm:1.0.1" + checksum: 10c0/5b9272c602e4f4472a215e58daff88f802923b84bc39c8860376bb1c0e42aaf18c25d69ad974bd06ec6db6f544b783edecd5502cd3d184748d99080d68e4be5f + languageName: node + linkType: hard + +"psl@npm:^1.1.33": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 10c0/6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab + languageName: node + linkType: hard + +"public-encrypt@npm:^4.0.0": + version: 4.0.3 + resolution: "public-encrypt@npm:4.0.3" + dependencies: + bn.js: "npm:^4.1.0" + browserify-rsa: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + parse-asn1: "npm:^5.0.0" + randombytes: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.2 + resolution: "pump@npm:3.0.2" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/5ad655cb2a7738b4bcf6406b24ad0970d680649d996b55ad20d1be8e0c02394034e4c45ff7cd105d87f1e9b96a0e3d06fd28e11fae8875da26e7f7a8e2c9726f + languageName: node + linkType: hard + +"punycode@npm:1.3.2": + version: 1.3.2 + resolution: "punycode@npm:1.3.2" + checksum: 10c0/281fd20eaf4704f79d80cb0dc65065bf6452ee67989b3e8941aed6360a5a9a8a01d3e2ed71d0bde3cd74fb5a5dd9db4160bed5a8c20bed4b6764c24ce4c7d2d2 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"pure-rand@npm:^6.0.0": + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 10c0/1abe217897bf74dcb3a0c9aba3555fe975023147b48db540aa2faf507aee91c03bf54f6aef0eb2bf59cc259a16d06b28eca37f0dc426d94f4692aeff02fb0e65 + languageName: node + linkType: hard + +"q@npm:^1.5.1": + version: 1.5.1 + resolution: "q@npm:1.5.1" + checksum: 10c0/7855fbdba126cb7e92ef3a16b47ba998c0786ec7fface236e3eb0135b65df36429d91a86b1fff3ab0927b4ac4ee88a2c44527c7c3b8e2a37efbec9fe34803df4 + languageName: node + linkType: hard + +"qr-code-styling@npm:^1.6.0-rc.1": + version: 1.6.0-rc.1 + resolution: "qr-code-styling@npm:1.6.0-rc.1" + dependencies: + qrcode-generator: "npm:^1.4.3" + checksum: 10c0/d62f63ba800dbf7aa645816fca81c9be33d8561deac3686a00b93ce9f68f1784e2f65e59fdc7b1af22e20f37a47f35f8a0c2827043403bfc058b659a14fe02dd + languageName: node + linkType: hard + +"qr.js@npm:0.0.0": + version: 0.0.0 + resolution: "qr.js@npm:0.0.0" + checksum: 10c0/1c6a4c7a58d04e52ec2fee99e39b680fdc5b2a510a981df42c36b716a8eac6634d130fc4d65af8f030f2a07dbf5fa046b97cdfa7456c250ebb50a73916efdcb5 + languageName: node + linkType: hard + +"qrcode-generator@npm:^1.4.3": + version: 1.4.4 + resolution: "qrcode-generator@npm:1.4.4" + checksum: 10c0/3249fcff98cb9fa17c21329d3dfd895e294a2d6ea48161f7b377010779d41f0cd88668b7fb3478a659725061bb0a770b40a227c2f4853e8c4a6b947a9e8bf17a + languageName: node + linkType: hard + +"qrcode-terminal-nooctal@npm:^0.12.1": + version: 0.12.1 + resolution: "qrcode-terminal-nooctal@npm:0.12.1" + bin: + qrcode-terminal: bin/qrcode-terminal.js + checksum: 10c0/a7e1ce29e4a4be633bbef6d55636da560e3e06d7507f2ec5e840f28d3dee5012d0d0c2cd810f8f8b018d08d47b0eb134177d799a7525a204ac82cbc8bd68cb50 + languageName: node + linkType: hard + +"qrcode-terminal@npm:^0.12.0": + version: 0.12.0 + resolution: "qrcode-terminal@npm:0.12.0" + bin: + qrcode-terminal: ./bin/qrcode-terminal.js + checksum: 10c0/1d8996a743d6c95e22056bd45fe958c306213adc97d7ef8cf1e03bc1aeeb6f27180a747ec3d761141921351eb1e3ca688f7b673ab54cdae9fa358dffaa49563c + languageName: node + linkType: hard + +"qrcode@npm:*, qrcode@npm:1.5.4": + version: 1.5.4 + resolution: "qrcode@npm:1.5.4" + dependencies: + dijkstrajs: "npm:^1.0.1" + pngjs: "npm:^5.0.0" + yargs: "npm:^15.3.1" + bin: + qrcode: bin/qrcode + checksum: 10c0/ae1d57c9cff6099639a590b432c71b15e3bd3905ce4353e6d00c95dee6bb769a8f773f6a7575ecc1b8ed476bf79c5138a4a65cb380c682de3b926d7205d34d10 + languageName: node + linkType: hard + +"qrcode@npm:1.5.3": + version: 1.5.3 + resolution: "qrcode@npm:1.5.3" + dependencies: + dijkstrajs: "npm:^1.0.1" + encode-utf8: "npm:^1.0.3" + pngjs: "npm:^5.0.0" + yargs: "npm:^15.3.1" + bin: + qrcode: bin/qrcode + checksum: 10c0/eb961cd8246e00ae338b6d4a3a28574174456db42cec7070aa2b315fb6576b7f040b0e4347be290032e447359a145c68cb60ef884d55ca3e1076294fed46f719 + languageName: node + linkType: hard + +"qs@npm:6.13.0": + version: 6.13.0 + resolution: "qs@npm:6.13.0" + dependencies: + side-channel: "npm:^1.0.6" + checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 + languageName: node + linkType: hard + +"qs@npm:~6.10.3": + version: 6.10.4 + resolution: "qs@npm:6.10.4" + dependencies: + side-channel: "npm:^1.0.4" + checksum: 10c0/7a8c9d77968aeccb769aedd7e047c0e0109dad0cfa57cab1ad906f4069fd58f361b80abd2de5854ba9a09b4c5d06d6a2c82108766f1f1527572fe6130deaa471 + languageName: node + linkType: hard + +"query-string@npm:7.1.3, query-string@npm:^7.1.3": + version: 7.1.3 + resolution: "query-string@npm:7.1.3" + dependencies: + decode-uri-component: "npm:^0.2.2" + filter-obj: "npm:^1.1.0" + split-on-first: "npm:^1.0.0" + strict-uri-encode: "npm:^2.0.0" + checksum: 10c0/a896c08e9e0d4f8ffd89a572d11f668c8d0f7df9c27c6f49b92ab31366d3ba0e9c331b9a620ee747893436cd1f2f821a6327e2bc9776bde2402ac6c270b801b2 + languageName: node + linkType: hard + +"querystring@npm:0.2.0": + version: 0.2.0 + resolution: "querystring@npm:0.2.0" + checksum: 10c0/2036c9424beaacd3978bac9e4ba514331cc73163bea7bf3ad7e2c7355e55501938ec195312c607753f9c6e70b1bf9dfcda38db6241bd299c034e27ac639d64ed + languageName: node + linkType: hard + +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 10c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"quick-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 10c0/fe5acc6f775b172ca5b4373df26f7e4fd347975578199e7d74b2ae4077f0af05baa27d231de1e80e8f72d88275ccc6028568a7a8c9ee5e7368ace0e18eff93a4 + languageName: node + linkType: hard + +"quick-lru@npm:^4.0.1": + version: 4.0.1 + resolution: "quick-lru@npm:4.0.1" + checksum: 10c0/f9b1596fa7595a35c2f9d913ac312fede13d37dc8a747a51557ab36e11ce113bbe88ef4c0154968845559a7709cb6a7e7cbe75f7972182451cd45e7f057a334d + languageName: node + linkType: hard + +"radix3@npm:^1.1.2": + version: 1.1.2 + resolution: "radix3@npm:1.1.2" + checksum: 10c0/d4a295547f71af079868d2c2ed3814a9296ee026c5488212d58c106e6b4797c6eaec1259b46c9728913622f2240c9a944bfc8e2b3b5f6e4a5045338b1609f1e4 + languageName: node + linkType: hard + +"randombytes@npm:2.1.0, randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + languageName: node + linkType: hard + +"randomfill@npm:^1.0.3": + version: 1.0.4 + resolution: "randomfill@npm:1.0.4" + dependencies: + randombytes: "npm:^2.0.5" + safe-buffer: "npm:^5.1.0" + checksum: 10c0/11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c + languageName: node + linkType: hard + +"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 + languageName: node + linkType: hard + +"raw-body@npm:2.5.2": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" + dependencies: + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + unpipe: "npm:1.0.0" + checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 + languageName: node + linkType: hard + +"rc@npm:1.2.8, rc@npm:^1.2.7, rc@npm:^1.2.8": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: "npm:^0.6.0" + ini: "npm:~1.3.0" + minimist: "npm:^1.2.0" + strip-json-comments: "npm:~2.0.1" + bin: + rc: ./cli.js + checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 + languageName: node + linkType: hard + +"react-dom@npm:*": + version: 18.3.1 + resolution: "react-dom@npm:18.3.1" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.2" + peerDependencies: + react: ^18.3.1 + checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85 + languageName: node + linkType: hard + +"react-dom@npm:18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 10c0/66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + languageName: node + linkType: hard + +"react-error-boundary@npm:^3.1.0": + version: 3.1.4 + resolution: "react-error-boundary@npm:3.1.4" + dependencies: + "@babel/runtime": "npm:^7.12.5" + peerDependencies: + react: ">=16.13.1" + checksum: 10c0/f977ca61823e43de2381d53dd7aa8b4d79ff6a984c9afdc88dc44f9973b99de7fd382d2f0f91f2688e24bb987c0185bf45d0b004f22afaaab0f990a830253bfb + languageName: node + linkType: hard + +"react-error-overlay@npm:6.0.9": + version: 6.0.9 + resolution: "react-error-overlay@npm:6.0.9" + checksum: 10c0/02f51337f34589305f827249acb597446489794cc5b5e721a6260111325b56942a7471b76967cba304e797d7e4ef16dd0bd989c112dd0bb9586270df0d75a4a9 + languageName: node + linkType: hard + +"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.2.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"react-is@npm:^16.13.1": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + languageName: node + linkType: hard + +"react-is@npm:^17.0.1": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 + languageName: node + linkType: hard + +"react-native-fetch-api@npm:^3.0.0": + version: 3.0.0 + resolution: "react-native-fetch-api@npm:3.0.0" + dependencies: + p-defer: "npm:^3.0.0" + checksum: 10c0/324071bb7535ac80006ba38405724350c2a82f47326f356bc6f168f95d5bfdf0aa12cd5ebb4e7766c6a23ae0871f1e9f798f757661ba5f67822ffdad18f592ac + languageName: node + linkType: hard + +"react-native-webview@npm:^11.26.0": + version: 11.26.1 + resolution: "react-native-webview@npm:11.26.1" + dependencies: + escape-string-regexp: "npm:2.0.0" + invariant: "npm:2.2.4" + peerDependencies: + react: "*" + react-native: "*" + checksum: 10c0/9399929f2b598a66634c4663fa7703144eeab10c7027f72de7e9af6da6d96f12ead1cc2fdbb09b9aab4d1410b0578d11aa5b7c3db70ffa92fb0329cf181099a5 + languageName: node + linkType: hard + +"react-qr-code@npm:2.0.15": + version: 2.0.15 + resolution: "react-qr-code@npm:2.0.15" + dependencies: + prop-types: "npm:^15.8.1" + qr.js: "npm:0.0.0" + peerDependencies: + react: "*" + checksum: 10c0/6a9d73918623eecbf6204da02bae1851b584f22f0724b2e5cf529a7eee991a757a211822146f670db63c21860ccb2d245b9288f48cd58ca2bff16de0dcdbdb25 + languageName: node + linkType: hard + +"react-refresh@npm:0.10.0": + version: 0.10.0 + resolution: "react-refresh@npm:0.10.0" + checksum: 10c0/616e82bed3787bf4e55dcc1c9836f251b93523dd4b0ffb1c24c2dcf5d09f686fbf3cffc7d489cd7f12429f76ddf66eb431748fc07df56b18a888a7705cbc079e + languageName: node + linkType: hard + +"react-refresh@npm:^0.9.0": + version: 0.9.0 + resolution: "react-refresh@npm:0.9.0" + checksum: 10c0/fa20f605e19dc10342e5cec8dcbb88cd4a473d26a7ff0acf1f0402e78f94ec309837be07a3cc3646f88d19f9ed07fa13a275f4656b5e3ced8fa23ce488984609 + languageName: node + linkType: hard + +"react-shallow-renderer@npm:^16.15.0": + version: 16.15.0 + resolution: "react-shallow-renderer@npm:16.15.0" + dependencies: + object-assign: "npm:^4.1.1" + react-is: "npm:^16.12.0 || ^17.0.0 || ^18.0.0" + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/c194d741792e86043a4ae272f7353c1cb9412bc649945c4220c6a101a6ea5410cceb3d65d5a4d750f11a24f7426e8eec7977e8a4e3ad5d3ee235ca2b18166fa8 + languageName: node + linkType: hard + +"react-test-renderer@npm:18.2.0": + version: 18.2.0 + resolution: "react-test-renderer@npm:18.2.0" + dependencies: + react-is: "npm:^18.2.0" + react-shallow-renderer: "npm:^16.15.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 10c0/53dfada1da1e8dd0498a5601e9eea3dc6ca23c6c2694d1cab9712faea869c11e4ce1c9a618d674cb668a668b41fb6bcf9a7b0a078cd853b1922f002fa22f42c8 + languageName: node + linkType: hard + +"react@npm:*": + version: 18.3.1 + resolution: "react@npm:18.3.1" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 + languageName: node + linkType: hard + +"react@npm:18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + languageName: node + linkType: hard + +"read-cache@npm:^1.0.0": + version: 1.0.0 + resolution: "read-cache@npm:1.0.0" + dependencies: + pify: "npm:^2.3.0" + checksum: 10c0/90cb2750213c7dd7c80cb420654344a311fdec12944e81eb912cd82f1bc92aea21885fa6ce442e3336d9fccd663b8a7a19c46d9698e6ca55620848ab932da814 + languageName: node + linkType: hard + +"read-cmd-shim@npm:^3.0.0": + version: 3.0.1 + resolution: "read-cmd-shim@npm:3.0.1" + checksum: 10c0/a157c401161d28178aee45b70fae5f721b4f65ddedd728c51e21c3d2ea09715f73bcd33e87462bc27601f3445dce313d44e99450fafa48ded0b295445c49c2bf + languageName: node + linkType: hard + +"read-package-json-fast@npm:^2.0.2, read-package-json-fast@npm:^2.0.3": + version: 2.0.3 + resolution: "read-package-json-fast@npm:2.0.3" + dependencies: + json-parse-even-better-errors: "npm:^2.3.0" + npm-normalize-package-bin: "npm:^1.0.1" + checksum: 10c0/c265a5d6c85f4c8ee0bf35b0b0d92800a7439e5cf4d1f5a2b3f9615a02ee2fd46bca6c2f07e244bfac1c40816eb0d28aec259ae99d7552d144dd9f971a5d2028 + languageName: node + linkType: hard + +"read-package-json-fast@npm:^3.0.0": + version: 3.0.2 + resolution: "read-package-json-fast@npm:3.0.2" + dependencies: + json-parse-even-better-errors: "npm:^3.0.0" + npm-normalize-package-bin: "npm:^3.0.0" + checksum: 10c0/37787e075f0260a92be0428687d9020eecad7ece3bda37461c2219e50d1ec183ab6ba1d9ada193691435dfe119a42c8a5b5b5463f08c8ddbc3d330800b265318 + languageName: node + linkType: hard + +"read-package-json@npm:^5.0.0, read-package-json@npm:^5.0.2": + version: 5.0.2 + resolution: "read-package-json@npm:5.0.2" + dependencies: + glob: "npm:^8.0.1" + json-parse-even-better-errors: "npm:^2.3.1" + normalize-package-data: "npm:^4.0.0" + npm-normalize-package-bin: "npm:^2.0.0" + checksum: 10c0/78972bda869efb6191f7b70ab0ca1e7a86549a4aaf73cb379dfeb57098e4ecaa1128ba3f81485ed0b52174605ef16fce1599a551228e5f656a17a1a53a1793e7 + languageName: node + linkType: hard + +"read-package-json@npm:^6.0.0": + version: 6.0.4 + resolution: "read-package-json@npm:6.0.4" + dependencies: + glob: "npm:^10.2.2" + json-parse-even-better-errors: "npm:^3.0.0" + normalize-package-data: "npm:^5.0.0" + npm-normalize-package-bin: "npm:^3.0.0" + checksum: 10c0/0eb1110b35bc109a8d2789358a272c66b0fb8fd335a98df2ea9ff3423be564e2908f27d98f3f4b41da35495e04dc1763b33aad7cc24bfd58dfc6d60cca7d70c9 + languageName: node + linkType: hard + +"read-pkg-up@npm:^10.0.0": + version: 10.1.0 + resolution: "read-pkg-up@npm:10.1.0" + dependencies: + find-up: "npm:^6.3.0" + read-pkg: "npm:^8.1.0" + type-fest: "npm:^4.2.0" + checksum: 10c0/16a96ad664ff1a983e30aea2bd9490b65e4c6f29fa54c6b2a89c9f1474847b3a181c902c50c724678d5146043fd731d98aa2d8f9d6857e0ce84a30cbfc8a6b21 + languageName: node + linkType: hard + +"read-pkg-up@npm:^7.0.0, read-pkg-up@npm:^7.0.1": + version: 7.0.1 + resolution: "read-pkg-up@npm:7.0.1" + dependencies: + find-up: "npm:^4.1.0" + read-pkg: "npm:^5.2.0" + type-fest: "npm:^0.8.1" + checksum: 10c0/82b3ac9fd7c6ca1bdc1d7253eb1091a98ff3d195ee0a45386582ce3e69f90266163c34121e6a0a02f1630073a6c0585f7880b3865efcae9c452fa667f02ca385 + languageName: node + linkType: hard + +"read-pkg@npm:^5.0.0, read-pkg@npm:^5.2.0": + version: 5.2.0 + resolution: "read-pkg@npm:5.2.0" + dependencies: + "@types/normalize-package-data": "npm:^2.4.0" + normalize-package-data: "npm:^2.5.0" + parse-json: "npm:^5.0.0" + type-fest: "npm:^0.6.0" + checksum: 10c0/b51a17d4b51418e777029e3a7694c9bd6c578a5ab99db544764a0b0f2c7c0f58f8a6bc101f86a6fceb8ba6d237d67c89acf6170f6b98695d0420ddc86cf109fb + languageName: node + linkType: hard + +"read-pkg@npm:^8.0.0, read-pkg@npm:^8.1.0": + version: 8.1.0 + resolution: "read-pkg@npm:8.1.0" + dependencies: + "@types/normalize-package-data": "npm:^2.4.1" + normalize-package-data: "npm:^6.0.0" + parse-json: "npm:^7.0.0" + type-fest: "npm:^4.2.0" + checksum: 10c0/e50846bbfbe73f4b8fd8c23c523b2e9f1d78467297a870ff94a9e6db7eb65445a4a392bf2896b7566c1715d36492d92d368f1c4b38996dd3942fd1865eb22936 + languageName: node + linkType: hard + +"read@npm:1, read@npm:^1.0.7, read@npm:~1.0.7": + version: 1.0.7 + resolution: "read@npm:1.0.7" + dependencies: + mute-stream: "npm:~0.0.4" + checksum: 10c0/443533f05d5bb11b36ef1c6d625aae4e2ced8967e93cf546f35aa77b4eb6bd157f4256619e446bae43467f8f6619c7bc5c76983348dffaf36afedf4224f46216 + languageName: node + linkType: hard + +"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readable-stream@npm:^1.0.26-4": + version: 1.1.14 + resolution: "readable-stream@npm:1.1.14" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.1" + isarray: "npm:0.0.1" + string_decoder: "npm:~0.10.x" + checksum: 10c0/b7f41b16b305103d598e3c8964fa30d52d6e0b5d9fdad567588964521691c24b279c7a8bb71f11927c3613acf355bac72d8396885a43d50425b2caafd49bc83d + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.8, readable-stream@npm:~2.3.6": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"readable-stream@npm:^3.6.2 || ^4.4.2": + version: 4.5.2 + resolution: "readable-stream@npm:4.5.2" + dependencies: + abort-controller: "npm:^3.0.0" + buffer: "npm:^6.0.3" + events: "npm:^3.3.0" + process: "npm:^0.11.10" + string_decoder: "npm:^1.3.0" + checksum: 10c0/a2c80e0e53aabd91d7df0330929e32d0a73219f9477dbbb18472f6fdd6a11a699fc5d172a1beff98d50eae4f1496c950ffa85b7cc2c4c196963f289a5f39275d + languageName: node + linkType: hard + +"readable-stream@npm:~1.0.26, readable-stream@npm:~1.0.26-4": + version: 1.0.34 + resolution: "readable-stream@npm:1.0.34" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.1" + isarray: "npm:0.0.1" + string_decoder: "npm:~0.10.x" + checksum: 10c0/02272551396ed8930ddee1a088bdf0379f0f7cc47ac49ed8804e998076cb7daec9fbd2b1fd9c0490ec72e56e8bb3651abeb8080492b8e0a9c3f2158330908ed6 + languageName: node + linkType: hard + +"readdir-scoped-modules@npm:^1.1.0": + version: 1.1.0 + resolution: "readdir-scoped-modules@npm:1.1.0" + dependencies: + debuglog: "npm:^1.0.1" + dezalgo: "npm:^1.0.0" + graceful-fs: "npm:^4.1.2" + once: "npm:^1.3.0" + checksum: 10c0/21a53741c488775cbf78b0b51f1b897e9c523b1bcf54567fc2c8ed09b12d9027741f45fcb720f388c0c3088021b54dc3f616c07af1531417678cc7962fc15e5c + languageName: node + linkType: hard + +"readdirp@npm:^4.0.1": + version: 4.0.2 + resolution: "readdirp@npm:4.0.2" + checksum: 10c0/a16ecd8ef3286dcd90648c3b103e3826db2b766cdb4a988752c43a83f683d01c7059158d623cbcd8bdfb39e65d302d285be2d208e7d9f34d022d912b929217dd + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"real-require@npm:^0.1.0": + version: 0.1.0 + resolution: "real-require@npm:0.1.0" + checksum: 10c0/c0f8ae531d1f51fe6343d47a2a1e5756e19b65a81b4a9642b9ebb4874e0d8b5f3799bc600bf4592838242477edc6f57778593f21b71d90f8ad0d8a317bbfae1c + languageName: node + linkType: hard + +"receptacle@npm:^1.3.2": + version: 1.3.2 + resolution: "receptacle@npm:1.3.2" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/213dc9e4e80969cde60c5877fae08d8438f0bf7dd10bf4ea47916a10c053ca05d6581bda374d8f22ce15e6b50739efe319d847362f5ec9e1a4cbdcbde3ddf355 + languageName: node + linkType: hard + +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: "npm:^4.0.0" + strip-indent: "npm:^3.0.0" + checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae + languageName: node + linkType: hard + +"redeyed@npm:~2.1.0": + version: 2.1.1 + resolution: "redeyed@npm:2.1.1" + dependencies: + esprima: "npm:~4.0.0" + checksum: 10c0/350f5e39aebab3886713a170235c38155ee64a74f0f7e629ecc0144ba33905efea30c2c3befe1fcbf0b0366e344e7bfa34e6b2502b423c9a467d32f1306ef166 + languageName: node + linkType: hard + +"reflect-metadata@npm:^0.1.2": + version: 0.1.14 + resolution: "reflect-metadata@npm:0.1.14" + checksum: 10c0/3a6190c7f6cb224f26a012d11f9e329360c01c1945e2cbefea23976a8bacf9db6b794aeb5bf18adcb673c448a234fbc06fc41853c00a6c206b30f0777ecf019e + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.4": + version: 1.0.6 + resolution: "reflect.getprototypeof@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.1" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + which-builtin-type: "npm:^1.1.3" + checksum: 10c0/baf4ef8ee6ff341600f4720b251cf5a6cb552d6a6ab0fdc036988c451bf16f920e5feb0d46bd4f530a5cce568f1f7aca2d77447ca798920749cfc52783c39b55 + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.2.0": + version: 10.2.0 + resolution: "regenerate-unicode-properties@npm:10.2.0" + dependencies: + regenerate: "npm:^1.4.2" + checksum: 10c0/5510785eeaf56bbfdf4e663d6753f125c08d2a372d4107bc1b756b7bf142e2ed80c2733a8b54e68fb309ba37690e66a0362699b0e21d5c1f0255dea1b00e6460 + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 + languageName: node + linkType: hard + +"regenerator-runtime@npm:0.14.1, regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.7": + version: 0.13.11 + resolution: "regenerator-runtime@npm:0.13.11" + checksum: 10c0/12b069dc774001fbb0014f6a28f11c09ebfe3c0d984d88c9bced77fdb6fedbacbca434d24da9ae9371bfbf23f754869307fb51a4c98a8b8b18e5ef748677ca24 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" + dependencies: + "@babel/runtime": "npm:^7.8.4" + checksum: 10c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 + languageName: node + linkType: hard + +"regex-parser@npm:^2.2.11": + version: 2.3.0 + resolution: "regex-parser@npm:2.3.0" + checksum: 10c0/de31c40e9d982735fdf5934c822cc5cafbe6a0f0909d9fef52e2bd4cc2198933c89fd5e7a17697f25591fdb5df386a088296612b45f0f8e194222070fc5b5cc7 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": + version: 1.5.3 + resolution: "regexp.prototype.flags@npm:1.5.3" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/e1a7c7dc42cc91abf73e47a269c4b3a8f225321b7f617baa25821f6a123a91d23a73b5152f21872c566e699207e1135d075d2251cd3e84cc96d82a910adf6020 + languageName: node + linkType: hard + +"regexpp@npm:^3.2.0": + version: 3.2.0 + resolution: "regexpp@npm:3.2.0" + checksum: 10c0/d1da82385c8754a1681416b90b9cca0e21b4a2babef159099b88f640637d789c69011d0bc94705dacab85b81133e929d027d85210e8b8b03f8035164dbc14710 + languageName: node + linkType: hard + +"regexpu-core@npm:^6.1.1": + version: 6.1.1 + resolution: "regexpu-core@npm:6.1.1" + dependencies: + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.2.0" + regjsgen: "npm:^0.8.0" + regjsparser: "npm:^0.11.0" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10c0/07d49697e20f9b65977535abba4858b7f5171c13f7c366be53ec1886d3d5f69f1b98cc6a6e63cf271adda077c3366a4c851c7473c28bbd69cf5a6b6b008efc3e + languageName: node + linkType: hard + +"registry-auth-token@npm:^4.0.0": + version: 4.2.2 + resolution: "registry-auth-token@npm:4.2.2" + dependencies: + rc: "npm:1.2.8" + checksum: 10c0/1d0000b8b65e7141a4cc4594926e2551607f48596e01326e7aa2ba2bc688aea86b2aa0471c5cb5de7acc9a59808a3a1ddde9084f974da79bfc67ab67aa48e003 + languageName: node + linkType: hard + +"registry-auth-token@npm:^5.0.0": + version: 5.0.2 + resolution: "registry-auth-token@npm:5.0.2" + dependencies: + "@pnpm/npm-conf": "npm:^2.1.0" + checksum: 10c0/20fc2225681cc54ae7304b31ebad5a708063b1949593f02dfe5fb402bc1fc28890cecec6497ea396ba86d6cca8a8480715926dfef8cf1f2f11e6f6cc0a1b4bde + languageName: node + linkType: hard + +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: 10c0/44f526c4fdbf0b29286101a282189e4dbb303f4013cf3fea058668d96d113b9180d3d03d1e13f6d4cbde38b7728bf951aecd9dc199938c080093a9a6f0d7a6bd + languageName: node + linkType: hard + +"regjsparser@npm:^0.11.0": + version: 0.11.1 + resolution: "regjsparser@npm:0.11.1" + dependencies: + jsesc: "npm:~3.0.2" + bin: + regjsparser: bin/parser + checksum: 10c0/be4b40981a596b31eacd84ee12cfa474f1d33a6c05f7e995e8ec9d5ad8f1c3fbf7a5b690a05c443e1f312a1c0b16d4ea0b3384596a61d4fda97aa322879bb3cd + languageName: node + linkType: hard + +"request-progress@npm:^3.0.0": + version: 3.0.0 + resolution: "request-progress@npm:3.0.0" + dependencies: + throttleit: "npm:^1.0.0" + checksum: 10c0/d5dcb7155a738572c8781436f6b418e866066a30eea0f99a9ab26b6f0ed6c13637462bba736357de3899b8d30431ee9202ac956a5f8ccdd0d9d1ed0962000d14 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + +"require-main-filename@npm:^2.0.0": + version: 2.0.0 + resolution: "require-main-filename@npm:2.0.0" + checksum: 10c0/db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6 + languageName: node + linkType: hard + +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 + languageName: node + linkType: hard + +"requizzle@npm:^0.2.3": + version: 0.2.4 + resolution: "requizzle@npm:0.2.4" + dependencies: + lodash: "npm:^4.17.21" + checksum: 10c0/ad138f987943aeda5f96cd1ccba9752c96352a729a7e3c3e2545568703f7fc9b978d9b46715803408ef178b0d61d36a4b1b506b367b7e78fe6d041fa5bfa5e06 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab + languageName: node + linkType: hard + +"resolve-url-loader@npm:5.0.0": + version: 5.0.0 + resolution: "resolve-url-loader@npm:5.0.0" + dependencies: + adjust-sourcemap-loader: "npm:^4.0.0" + convert-source-map: "npm:^1.7.0" + loader-utils: "npm:^2.0.0" + postcss: "npm:^8.2.14" + source-map: "npm:0.6.1" + checksum: 10c0/53eef3620332f2fc35a4deffaa4395064b2ffd1bc28be380faa3f1e99c2fb7bbf0f705700b4539387d5b6c39586df54a92cd5d031606f19de4bf9e0ff1b6a522 + languageName: node + linkType: hard + +"resolve.exports@npm:^2.0.0": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 10c0/cc4cffdc25447cf34730f388dca5021156ba9302a3bad3d7f168e790dc74b2827dff603f1bc6ad3d299bac269828dca96dd77e036dc9fba6a2a1807c47ab5c98 + languageName: node + linkType: hard + +"resolve@npm:1.22.2": + version: 1.22.2 + resolution: "resolve@npm:1.22.2" + dependencies: + is-core-module: "npm:^2.11.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/f9f424a8117d1c68371b4fbc64e6ac045115a3beacc4bd3617b751f7624b69ad40c47dc995585c7f13d4a09723a8f167847defb7d39fad70b0d43bbba05ff851 + languageName: node + linkType: hard + +"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.4": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.3, resolve@npm:^2.0.0-next.5": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A1.22.2#optional!builtin": + version: 1.22.2 + resolution: "resolve@patch:resolve@npm%3A1.22.2#optional!builtin::version=1.22.2&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.11.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/dcf068c4391941734efda06b6f778c013fd349cd4340f126de17c265a7b006c67de7e80e7aa06ecd29f3922e49f5561622b9faf98531f16aa9a896d22148c661 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^2.0.0-next.3#optional!builtin, resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + languageName: node + linkType: hard + +"restore-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "restore-cursor@npm:4.0.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318 + languageName: node + linkType: hard + +"retimer@npm:^3.0.0": + version: 3.0.0 + resolution: "retimer@npm:3.0.0" + checksum: 10c0/dc3e07997c77c2b9113072bc57bcad9898a388a5cdf59a07a9fb3974f1dd8958e371c97ac93eb312b184d63d907faa5430bb5ff859a8b2d285f4db1082beb96a + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rfdc@npm:^1.3.0": + version: 1.4.1 + resolution: "rfdc@npm:1.4.1" + checksum: 10c0/4614e4292356cafade0b6031527eea9bc90f2372a22c012313be1dcc69a3b90c7338158b414539be863fa95bfcb2ddcd0587be696841af4e6679d85e62c060c7 + languageName: node + linkType: hard + +"rimraf@npm:*, rimraf@npm:6.0.1": + version: 6.0.1 + resolution: "rimraf@npm:6.0.1" + dependencies: + glob: "npm:^11.0.0" + package-json-from-dist: "npm:^1.0.0" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10c0/b30b6b072771f0d1e73b4ca5f37bb2944ee09375be9db5f558fcd3310000d29dfcfa93cf7734d75295ad5a7486dc8e40f63089ced1722a664539ffc0c3ece8c6 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"rimraf@npm:^4.1.2": + version: 4.4.1 + resolution: "rimraf@npm:4.4.1" + dependencies: + glob: "npm:^9.2.0" + bin: + rimraf: dist/cjs/src/bin.js + checksum: 10c0/8c5e142d26d8b222be9dc9a1a41ba48e95d8f374e813e66a8533e87c6180174fcb3f573b9b592eca12740ebf8b78526d136acd971d4a790763d6f2232c34fa24 + languageName: node + linkType: hard + +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": + version: 2.0.2 + resolution: "ripemd160@npm:2.0.2" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + checksum: 10c0/f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a + languageName: node + linkType: hard + +"rollup-plugin-copy@npm:^3.4.0": + version: 3.5.0 + resolution: "rollup-plugin-copy@npm:3.5.0" + dependencies: + "@types/fs-extra": "npm:^8.0.1" + colorette: "npm:^1.1.0" + fs-extra: "npm:^8.1.0" + globby: "npm:10.0.1" + is-plain-object: "npm:^3.0.0" + checksum: 10c0/163a27756fa2dd1cf50e5b05c82c530fce05c58f11d4f400797e3c6ff3fc6787426f781d71749e15d90fa98917fe5b8caf70d88e08a574fe52574c835ba15e84 + languageName: node + linkType: hard + +"rollup-plugin-peer-deps-external@npm:^2.2.4": + version: 2.2.4 + resolution: "rollup-plugin-peer-deps-external@npm:2.2.4" + peerDependencies: + rollup: "*" + checksum: 10c0/86c969e38165363d1831997cb765a351bbc03b76c68496aa3c5714e4545f3335489da92d069c6b7785cbf9b1df6d1d7e16c5ccfa31aad4f9f00dd4f9c6f2258b + languageName: node + linkType: hard + +"rollup-plugin-postcss@npm:^4.0.1": + version: 4.0.2 + resolution: "rollup-plugin-postcss@npm:4.0.2" + dependencies: + chalk: "npm:^4.1.0" + concat-with-sourcemaps: "npm:^1.1.0" + cssnano: "npm:^5.0.1" + import-cwd: "npm:^3.0.0" + p-queue: "npm:^6.6.2" + pify: "npm:^5.0.0" + postcss-load-config: "npm:^3.0.0" + postcss-modules: "npm:^4.0.0" + promise.series: "npm:^0.2.0" + resolve: "npm:^1.19.0" + rollup-pluginutils: "npm:^2.8.2" + safe-identifier: "npm:^0.4.2" + style-inject: "npm:^0.3.0" + peerDependencies: + postcss: 8.x + checksum: 10c0/c35fde734c2985a0302ce06a8444c2d4cfeba8ac3d9776b48546dc4d819f92c679c120d6ab28ffd09b51056fc7797559b36c29aabb9deaf50f872587d473821e + languageName: node + linkType: hard + +"rollup-plugin-typescript2@npm:0.34.1": + version: 0.34.1 + resolution: "rollup-plugin-typescript2@npm:0.34.1" + dependencies: + "@rollup/pluginutils": "npm:^4.1.2" + find-cache-dir: "npm:^3.3.2" + fs-extra: "npm:^10.0.0" + semver: "npm:^7.3.7" + tslib: "npm:^2.4.0" + peerDependencies: + rollup: ">=1.26.3" + typescript: ">=2.4.0" + checksum: 10c0/957171f167e6bbefab68bd05ed2796aafd14c8d47bf544b92532bcea056b5a63fe300816a428c49361736160b2ffc7e8b1109bf4fa9de95e54a9fdd161e0bf62 + languageName: node + linkType: hard + +"rollup-plugin-visualizer@npm:^5.9.2": + version: 5.12.0 + resolution: "rollup-plugin-visualizer@npm:5.12.0" + dependencies: + open: "npm:^8.4.0" + picomatch: "npm:^2.3.1" + source-map: "npm:^0.7.4" + yargs: "npm:^17.5.1" + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + bin: + rollup-plugin-visualizer: dist/bin/cli.js + checksum: 10c0/0e44a641223377ebb472bb10f2b22efa773b5f6fbe8d54f197f07c68d7a432cbf00abad79a0aa1570f70c673c792f24700d926d663ed9a4d0ad8406ae5a0f4e4 + languageName: node + linkType: hard + +"rollup-pluginutils@npm:^2.8.2": + version: 2.8.2 + resolution: "rollup-pluginutils@npm:2.8.2" + dependencies: + estree-walker: "npm:^0.6.1" + checksum: 10c0/20947bec5a5dd68b5c5c8423911e6e7c0ad834c451f1a929b1f4e2bc08836ad3f1a722ef2bfcbeca921870a0a283f13f064a317dc7a6768496e98c9a641ba290 + languageName: node + linkType: hard + +"rollup@npm:^2.56.2": + version: 2.79.2 + resolution: "rollup@npm:2.79.2" + dependencies: + fsevents: "npm:~2.3.2" + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/bc3746c988d903c2211266ddc539379d53d92689b9cc5c2b4e3ae161689de9af491957a567c629b6cc81f48d0928a7591fc4c383fba68a48d2966c9fb8a2bce9 + languageName: node + linkType: hard + +"rollup@npm:^3.21.0, rollup@npm:^3.29.2": + version: 3.29.5 + resolution: "rollup@npm:3.29.5" + dependencies: + fsevents: "npm:~2.3.2" + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/a1fa26f21f0d6cf93b6d05ea284ad5854905b585f28a14c27d439b0f9b859cba13ea25f376303d86770e59b4686bedc52b4706e57442514f0414c6fd3c5b8e71 + languageName: node + linkType: hard + +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"rxjs@npm:*, rxjs@npm:7.8.1, rxjs@npm:^7.5.1, rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + +"rxjs@npm:6.6.7, rxjs@npm:^6.5.4": + version: 6.6.7 + resolution: "rxjs@npm:6.6.7" + dependencies: + tslib: "npm:^1.9.0" + checksum: 10c0/e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.2": + version: 1.1.2 + resolution: "safe-array-concat@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9 + languageName: node + linkType: hard + +"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-identifier@npm:^0.4.2": + version: 0.4.2 + resolution: "safe-identifier@npm:0.4.2" + checksum: 10c0/a6b0cdb5347e48c5ea4ddf4cdca5359b12529a11a7368225c39f882fcc0e679c81e82e3b13e36bd27ba7bdec9286f4cc062e3e527464d93ba61290b6e0bc6747 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.1.4" + checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 + languageName: node + linkType: hard + +"safe-stable-stringify@npm:^2.1.0": + version: 2.5.0 + resolution: "safe-stable-stringify@npm:2.5.0" + checksum: 10c0/baea14971858cadd65df23894a40588ed791769db21bafb7fd7608397dbdce9c5aac60748abae9995e0fc37e15f2061980501e012cd48859740796bea2987f49 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:^2.1.2, safer-buffer@npm:~2.1.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"sass-loader@npm:13.3.1": + version: 13.3.1 + resolution: "sass-loader@npm:13.3.1" + dependencies: + klona: "npm:^2.0.6" + neo-async: "npm:^2.6.2" + peerDependencies: + fibers: ">= 3.1.0" + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: "*" + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + checksum: 10c0/68ffb7ad626a27e44b0f68cd549549e75460fa6a5100e0808b89a8b775264b98fdb8e2e1a39b7f97308a94cf87b3d7a1b42acc461cf504e83f36030a07ee95db + languageName: node + linkType: hard + +"sass-loader@npm:^12.2.0": + version: 12.6.0 + resolution: "sass-loader@npm:12.6.0" + dependencies: + klona: "npm:^2.0.4" + neo-async: "npm:^2.6.2" + peerDependencies: + fibers: ">= 3.1.0" + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + sass: ^1.3.0 + sass-embedded: "*" + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + checksum: 10c0/e1ef655f3898cc4c45f02b3c627f8baf998139993a9a79c524153a80814282bfe20d8d8d703b8cf1d05457c1930940b65e2156d11285ed0861f9a1016f993e53 + languageName: node + linkType: hard + +"sass@npm:1.55.0": + version: 1.55.0 + resolution: "sass@npm:1.55.0" + dependencies: + chokidar: "npm:>=3.0.0 <4.0.0" + immutable: "npm:^4.0.0" + source-map-js: "npm:>=0.6.2 <2.0.0" + bin: + sass: sass.js + checksum: 10c0/cc518d8f3ea1fdb4044f665e8fbdd49dc740561ffb188eb164d32edd48d50e7b840f1671c3d95634780c63495f0ae37616e72b251e4bc10c80493b1c2f8e7a6c + languageName: node + linkType: hard + +"sass@npm:1.63.2": + version: 1.63.2 + resolution: "sass@npm:1.63.2" + dependencies: + chokidar: "npm:>=3.0.0 <4.0.0" + immutable: "npm:^4.0.0" + source-map-js: "npm:>=0.6.2 <2.0.0" + bin: + sass: sass.js + checksum: 10c0/22dfb77f2c2707a67adef382a448899a5d0577bfa8f4cd5560ab1f3b0d492bdfee78b753f130bccef3647dfa7be3585c936fbfbfd110ee4f96d3916e937f655e + languageName: node + linkType: hard + +"sass@npm:^1.42.1": + version: 1.79.4 + resolution: "sass@npm:1.79.4" + dependencies: + chokidar: "npm:^4.0.0" + immutable: "npm:^4.0.0" + source-map-js: "npm:>=0.6.2 <2.0.0" + bin: + sass: sass.js + checksum: 10c0/505ff0d9267d0fb990971e617acfeabf7c060c55d4cef68fe8a4bc693e7ea88ae7d7caeca3975e4b453459ba4a707b6e5b6979fc9395a7e08f0a43ca6aed06b8 + languageName: node + linkType: hard + +"sax@npm:^1.2.4": + version: 1.4.1 + resolution: "sax@npm:1.4.1" + checksum: 10c0/6bf86318a254c5d898ede6bd3ded15daf68ae08a5495a2739564eb265cd13bcc64a07ab466fb204f67ce472bb534eb8612dac587435515169593f4fffa11de7c + languageName: node + linkType: hard + +"sax@npm:~1.2.4": + version: 1.2.4 + resolution: "sax@npm:1.2.4" + checksum: 10c0/6e9b05ff443ee5e5096ce92d31c0740a20d33002fad714ebcb8fc7a664d9ee159103ebe8f7aef0a1f7c5ecacdd01f177f510dff95611c589399baf76437d3fe3 + languageName: node + linkType: hard + +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: "npm:^2.2.0" + checksum: 10c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 + languageName: node + linkType: hard + +"scheduler@npm:^0.23.0, scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 + languageName: node + linkType: hard + +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.1.2, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": "npm:^7.0.8" + ajv: "npm:^6.12.5" + ajv-keywords: "npm:^3.5.2" + checksum: 10c0/fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 + languageName: node + linkType: hard + +"schema-utils@npm:^4.0.0": + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" + dependencies: + "@types/json-schema": "npm:^7.0.9" + ajv: "npm:^8.9.0" + ajv-formats: "npm:^2.1.1" + ajv-keywords: "npm:^5.1.0" + checksum: 10c0/8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 + languageName: node + linkType: hard + +"scrypt-js@npm:3.0.1": + version: 3.0.1 + resolution: "scrypt-js@npm:3.0.1" + checksum: 10c0/e2941e1c8b5c84c7f3732b0153fee624f5329fc4e772a06270ee337d4d2df4174b8abb5e6ad53804a29f53890ecbc78f3775a319323568c0313040c0e55f5b10 + languageName: node + linkType: hard + +"secp256k1@npm:5.0.0, secp256k1@npm:^5.0.0": + version: 5.0.0 + resolution: "secp256k1@npm:5.0.0" + dependencies: + elliptic: "npm:^6.5.4" + node-addon-api: "npm:^5.0.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.2.0" + checksum: 10c0/b9ab4c952babfe6103978b2f656265041ebe09b8a91b26a796cbcbe04d2252e28e12ec50d5ed3006bf2ca5feef6edcbd71c7c85122615f5ffbcd1acdd564f77f + languageName: node + linkType: hard + +"select-hose@npm:^2.0.0": + version: 2.0.0 + resolution: "select-hose@npm:2.0.0" + checksum: 10c0/01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 + languageName: node + linkType: hard + +"selfsigned@npm:^2.1.1": + version: 2.4.1 + resolution: "selfsigned@npm:2.4.1" + dependencies: + "@types/node-forge": "npm:^1.3.0" + node-forge: "npm:^1" + checksum: 10c0/521829ec36ea042f7e9963bf1da2ed040a815cf774422544b112ec53b7edc0bc50a0f8cc2ae7aa6cc19afa967c641fd96a15de0fc650c68651e41277d2e1df09 + languageName: node + linkType: hard + +"semantic-release@npm:19.0.2": + version: 19.0.2 + resolution: "semantic-release@npm:19.0.2" + dependencies: + "@semantic-release/commit-analyzer": "npm:^9.0.2" + "@semantic-release/error": "npm:^3.0.0" + "@semantic-release/github": "npm:^8.0.0" + "@semantic-release/npm": "npm:^9.0.0" + "@semantic-release/release-notes-generator": "npm:^10.0.0" + aggregate-error: "npm:^3.0.0" + cosmiconfig: "npm:^7.0.0" + debug: "npm:^4.0.0" + env-ci: "npm:^5.0.0" + execa: "npm:^5.0.0" + figures: "npm:^3.0.0" + find-versions: "npm:^4.0.0" + get-stream: "npm:^6.0.0" + git-log-parser: "npm:^1.2.0" + hook-std: "npm:^2.0.0" + hosted-git-info: "npm:^4.0.0" + lodash: "npm:^4.17.21" + marked: "npm:^4.0.10" + marked-terminal: "npm:^5.0.0" + micromatch: "npm:^4.0.2" + p-each-series: "npm:^2.1.0" + p-reduce: "npm:^2.0.0" + read-pkg-up: "npm:^7.0.0" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.3.2" + semver-diff: "npm:^3.1.1" + signale: "npm:^1.2.1" + yargs: "npm:^16.2.0" + bin: + semantic-release: bin/semantic-release.js + checksum: 10c0/f3d2d7ad3717d7af7ef8ea1648ba5c5023a46a3bb67eae99fe466843d0e352d23169e887c9a49f6ae050bacaf86a23f4393d46db81c7b952a3084c024aba78c9 + languageName: node + linkType: hard + +"semver-diff@npm:^3.1.1": + version: 3.1.1 + resolution: "semver-diff@npm:3.1.1" + dependencies: + semver: "npm:^6.3.0" + checksum: 10c0/7d350f1450b9577d538ef866a9bc4cd97bfbf1f1d92070291495a31d0ec3aa808e826c223e5454ea9877cc06eaa886ffd71bb3a1f331b44bc210f9ff525c68d2 + languageName: node + linkType: hard + +"semver-regex@npm:^3.1.2": + version: 3.1.4 + resolution: "semver-regex@npm:3.1.4" + checksum: 10c0/17bb7742b280e113c7850ce40b274341c74f61077a0712babd84782ea11b5bc343cde5b4e6d06721b29a2a4a17a42c5b8d1559efd9fd3de799997e83d361162c + languageName: node + linkType: hard + +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 + languageName: node + linkType: hard + +"semver@npm:7.3.4": + version: 7.3.4 + resolution: "semver@npm:7.3.4" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10c0/16b77752071597135b934bb33258badbac6c1cebbabe507ce31f68db3229acae7afa9602265c375c34df092339caa738b105e0c62240536ea1efd4767c36e674 + languageName: node + linkType: hard + +"semver@npm:7.5.3": + version: 7.5.3 + resolution: "semver@npm:7.5.3" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10c0/4cf3bab7e8cf8c2ae521fc4bcc50a4d6912a836360796b23b9f1c26f45d27a73f870e47664df4770bde0dd60dc4d4781a05fd49fe91d72376ea5519b9e791459 + languageName: node + linkType: hard + +"semver@npm:7.x, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf + languageName: node + linkType: hard + +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:~2.3.1": + version: 2.3.2 + resolution: "semver@npm:2.3.2" + bin: + semver: ./bin/semver + checksum: 10c0/0c081b12e99ae85da82411caacb814a463ff9a65fa87794c3130d9f820b40ce00dad8d08a1083e729e3397fafed6aa6df0fd41594b5af51f688cd11dd2f6257c + languageName: node + linkType: hard + +"send@npm:0.19.0": + version: 0.19.0 + resolution: "send@npm:0.19.0" + dependencies: + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + mime: "npm:1.6.0" + ms: "npm:2.1.3" + on-finished: "npm:2.4.1" + range-parser: "npm:~1.2.1" + statuses: "npm:2.0.1" + checksum: 10c0/ea3f8a67a8f0be3d6bf9080f0baed6d2c51d11d4f7b4470de96a5029c598a7011c497511ccc28968b70ef05508675cebff27da9151dd2ceadd60be4e6cf845e3 + languageName: node + linkType: hard + +"sentence-case@npm:^3.0.4": + version: 3.0.4 + resolution: "sentence-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/9a90527a51300cf5faea7fae0c037728f9ddcff23ac083883774c74d180c0a03c31aab43d5c3347512e8c1b31a0d4712512ec82beb71aa79b85149f9abeb5467 + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 + languageName: node + linkType: hard + +"serve-index@npm:^1.9.1": + version: 1.9.1 + resolution: "serve-index@npm:1.9.1" + dependencies: + accepts: "npm:~1.3.4" + batch: "npm:0.6.1" + debug: "npm:2.6.9" + escape-html: "npm:~1.0.3" + http-errors: "npm:~1.6.2" + mime-types: "npm:~2.1.17" + parseurl: "npm:~1.3.2" + checksum: 10c0/a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c + languageName: node + linkType: hard + +"serve-static@npm:1.16.2": + version: 1.16.2 + resolution: "serve-static@npm:1.16.2" + dependencies: + encodeurl: "npm:~2.0.0" + escape-html: "npm:~1.0.3" + parseurl: "npm:~1.3.3" + send: "npm:0.19.0" + checksum: 10c0/528fff6f5e12d0c5a391229ad893910709bc51b5705962b09404a1d813857578149b8815f35d3ee5752f44cd378d0f31669d4b1d7e2d11f41e08283d5134bd1f + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.1": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 10c0/a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 + languageName: node + linkType: hard + +"setprototypeof@npm:1.1.1": + version: 1.1.1 + resolution: "setprototypeof@npm:1.1.1" + checksum: 10c0/1084b783f2d77908b0a593619e1214c2118c44c7c3277f6099dd7ca8acfc056c009e5d1b2860eae5e8b0ba9bc0a978c15613ff102ccc1093bb48aa6e0ed75e2f + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc + languageName: node + linkType: hard + +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.11, sha.js@npm:^2.4.8": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + bin: + sha.js: ./bin.js + checksum: 10c0/b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 + languageName: node + linkType: hard + +"sha1@npm:^1.1.1": + version: 1.1.1 + resolution: "sha1@npm:1.1.1" + dependencies: + charenc: "npm:>= 0.0.1" + crypt: "npm:>= 0.0.1" + checksum: 10c0/1bb36c89c112c741c265cca66712f883ae01d5c55b71aec80635fe2ad5d0c976a1a8a994dda774ae9f93b2da99fd111238758a8bf985adc400bd86f0e4452865 + languageName: node + linkType: hard + +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: "npm:^6.0.2" + checksum: 10c0/7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shell-quote@npm:^1.8.1": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"signale@npm:^1.2.1": + version: 1.4.0 + resolution: "signale@npm:1.4.0" + dependencies: + chalk: "npm:^2.3.2" + figures: "npm:^2.0.0" + pkg-conf: "npm:^2.1.0" + checksum: 10c0/3b637421368a30805da3948f82350cb9959ddfb19073f44609495384b98baba1c62b1c5c094db57000836c8bc84c6c05c979aa7e072ceeaaf0032d7991b329c7 + languageName: node + linkType: hard + +"sigstore@npm:^1.3.0": + version: 1.9.0 + resolution: "sigstore@npm:1.9.0" + dependencies: + "@sigstore/bundle": "npm:^1.1.0" + "@sigstore/protobuf-specs": "npm:^0.2.0" + "@sigstore/sign": "npm:^1.0.0" + "@sigstore/tuf": "npm:^1.0.3" + make-fetch-happen: "npm:^11.0.1" + bin: + sigstore: bin/sigstore.js + checksum: 10c0/64091a95f7a2073ab833bc172aadae0768b84c513a4e3dd3c6f55a1120ea774c293521b7eb6de510dd00562b4351acc2b9295b604c725a9c524fe4f81e4e8203 + languageName: node + linkType: hard + +"simple-concat@npm:^1.0.0": + version: 1.0.1 + resolution: "simple-concat@npm:1.0.1" + checksum: 10c0/62f7508e674414008910b5397c1811941d457dfa0db4fd5aa7fa0409eb02c3609608dfcd7508cace75b3a0bf67a2a77990711e32cd213d2c76f4fd12ee86d776 + languageName: node + linkType: hard + +"simple-get@npm:^4.0.0": + version: 4.0.1 + resolution: "simple-get@npm:4.0.1" + dependencies: + decompress-response: "npm:^6.0.0" + once: "npm:^1.3.1" + simple-concat: "npm:^1.0.0" + checksum: 10c0/b0649a581dbca741babb960423248899203165769747142033479a7dc5e77d7b0fced0253c731cd57cf21e31e4d77c9157c3069f4448d558ebc96cf9e1eebcf0 + languageName: node + linkType: hard + +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"slash@npm:^4.0.0": + version: 4.0.0 + resolution: "slash@npm:4.0.0" + checksum: 10c0/b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 + languageName: node + linkType: hard + +"slugify@npm:^1.6.5": + version: 1.6.6 + resolution: "slugify@npm:1.6.6" + checksum: 10c0/e7e63f08f389a371d6228bc19d64ec84360bf0a538333446cc49dbbf3971751a6d180d2f31551188dd007a65ca771e69f574e0283290a7825a818e90b75ef44d + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"snake-case@npm:^3.0.4": + version: 3.0.4 + resolution: "snake-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd + languageName: node + linkType: hard + +"socket.io-client@npm:^4.5.1": + version: 4.8.0 + resolution: "socket.io-client@npm:4.8.0" + dependencies: + "@socket.io/component-emitter": "npm:~3.1.0" + debug: "npm:~4.3.2" + engine.io-client: "npm:~6.6.1" + socket.io-parser: "npm:~4.2.4" + checksum: 10c0/41f142a79f5903cf007902b9b830313e425c5d6a4257d504b8c94d4b4edd3df037df997e622205228bceb18eea6f3308d25f55b3c919d6100849c232e7c06928 + languageName: node + linkType: hard + +"socket.io-parser@npm:~4.2.4": + version: 4.2.4 + resolution: "socket.io-parser@npm:4.2.4" + dependencies: + "@socket.io/component-emitter": "npm:~3.1.0" + debug: "npm:~4.3.1" + checksum: 10c0/9383b30358fde4a801ea4ec5e6860915c0389a091321f1c1f41506618b5cf7cd685d0a31c587467a0c4ee99ef98c2b99fb87911f9dfb329716c43b587f29ca48 + languageName: node + linkType: hard + +"sockjs@npm:^0.3.24": + version: 0.3.24 + resolution: "sockjs@npm:0.3.24" + dependencies: + faye-websocket: "npm:^0.11.3" + uuid: "npm:^8.3.2" + websocket-driver: "npm:^0.7.4" + checksum: 10c0/aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "socks-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:^6.0.2" + debug: "npm:4" + socks: "npm:^2.3.3" + checksum: 10c0/2bc4d996d3e6cb65f69d84aa94d5dcfabac5c264e777ecdb24511703a614d0a426b40adc2c6b456a9c590e6d4c0a67da70e2d59742ac0411dd7f46a49ce07c73 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: "npm:^6.0.2" + debug: "npm:^4.3.3" + socks: "npm:^2.6.2" + checksum: 10c0/b859f7eb8e96ec2c4186beea233ae59c02404094f3eb009946836af27d6e5c1627d1975a69b4d2e20611729ed543b6db3ae8481eb38603433c50d0345c987600 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.4 + resolution: "socks-proxy-agent@npm:8.0.4" + dependencies: + agent-base: "npm:^7.1.1" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/345593bb21b95b0508e63e703c84da11549f0a2657d6b4e3ee3612c312cb3a907eac10e53b23ede3557c6601d63252103494caa306b66560f43af7b98f53957a + languageName: node + linkType: hard + +"socks@npm:^2.3.3, socks@npm:^2.6.2, socks@npm:^2.8.3": + version: 2.8.3 + resolution: "socks@npm:2.8.3" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/d54a52bf9325165770b674a67241143a3d8b4e4c8884560c4e0e078aace2a728dffc7f70150660f51b85797c4e1a3b82f9b7aa25e0a0ceae1a243365da5c51a7 + languageName: node + linkType: hard + +"sonic-boom@npm:^2.2.1": + version: 2.8.0 + resolution: "sonic-boom@npm:2.8.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + checksum: 10c0/6b40f2e91a999819b1dc24018a5d1c8b74e66e5d019eabad17d5b43fc309b32255b7c405ed6ec885693c8f2b969099ce96aeefde027180928bc58c034234a86d + languageName: node + linkType: hard + +"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf + languageName: node + linkType: hard + +"source-map-loader@npm:4.0.1": + version: 4.0.1 + resolution: "source-map-loader@npm:4.0.1" + dependencies: + abab: "npm:^2.0.6" + iconv-lite: "npm:^0.6.3" + source-map-js: "npm:^1.0.2" + peerDependencies: + webpack: ^5.72.1 + checksum: 10c0/880b2c2dd74a71ade45f40bb9de72654eed7e6e6a3c00fb9fb0de28868084f4f00b9376988e43e250fae7c4bb54e85edce32c7651e66388c8bd433e9d6ff4772 + languageName: node + linkType: hard + +"source-map-loader@npm:^3.0.0": + version: 3.0.2 + resolution: "source-map-loader@npm:3.0.2" + dependencies: + abab: "npm:^2.0.5" + iconv-lite: "npm:^0.6.3" + source-map-js: "npm:^1.0.1" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/ce38822d10ac0fc09f3a3f320f184d5a5c7e66a6c447e5f2c36476d901e3224a00cc7843be615212a50b8607beee565f08b526fbb0621357a1a6247f48fd09bc + languageName: node + linkType: hard + +"source-map-resolve@npm:^0.6.0": + version: 0.6.0 + resolution: "source-map-resolve@npm:0.6.0" + dependencies: + atob: "npm:^2.1.2" + decode-uri-component: "npm:^0.2.0" + checksum: 10c0/bc2a94af3d2417196195eecf0130925b3558726726504a7c7bd1b9e383c4a789fa3f4616c4c673cf8bd7930ddd2e80481f203422282aeae342dbd56b91995188 + languageName: node + linkType: hard + +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + +"source-map-support@npm:0.5.19": + version: 0.5.19 + resolution: "source-map-support@npm:0.5.19" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/a232cb02dc5c2c048460dff3ca1a4c2aa44488822028932daff99b8707c8e4f87d2535dae319d65691c905096f2c06a2517793472634efb01f8a095661b9aa93 + languageName: node + linkType: hard + +"source-map-support@npm:0.5.21, source-map-support@npm:^0.5.5, source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d + languageName: node + linkType: hard + +"source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"source-map@npm:0.7.4, source-map@npm:^0.7.3, source-map@npm:^0.7.4": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc + languageName: node + linkType: hard + +"sourcemap-codec@npm:^1.4.8": + version: 1.4.8 + resolution: "sourcemap-codec@npm:1.4.8" + checksum: 10c0/f099279fdaae070ff156df7414bbe39aad69cdd615454947ed3e19136bfdfcb4544952685ee73f56e17038f4578091e12b17b283ed8ac013882916594d95b9e6 + languageName: node + linkType: hard + +"spawn-error-forwarder@npm:~1.0.0": + version: 1.0.0 + resolution: "spawn-error-forwarder@npm:1.0.0" + checksum: 10c0/531cb73404af88b5400f9b7a976836b9f09cb48e4c0c79784ad80001ea942eb256e311f14cc7d171539cd1a86297c1c5461177c3fa736ac30627f5f8a6b06db6 + languageName: node + linkType: hard + +"spdx-correct@npm:^3.0.0": + version: 3.2.0 + resolution: "spdx-correct@npm:3.2.0" + dependencies: + spdx-expression-parse: "npm:^3.0.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c0/49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386 + languageName: node + linkType: hard + +"spdx-exceptions@npm:^2.1.0": + version: 2.5.0 + resolution: "spdx-exceptions@npm:2.5.0" + checksum: 10c0/37217b7762ee0ea0d8b7d0c29fd48b7e4dfb94096b109d6255b589c561f57da93bf4e328c0290046115961b9209a8051ad9f525e48d433082fc79f496a4ea940 + languageName: node + linkType: hard + +"spdx-expression-parse@npm:^3.0.0": + version: 3.0.1 + resolution: "spdx-expression-parse@npm:3.0.1" + dependencies: + spdx-exceptions: "npm:^2.1.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c0/6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171 + languageName: node + linkType: hard + +"spdx-license-ids@npm:^3.0.0": + version: 3.0.20 + resolution: "spdx-license-ids@npm:3.0.20" + checksum: 10c0/bdff7534fad6ef59be49becda1edc3fb7f5b3d6f296a715516ab9d972b8ad59af2c34b2003e01db8970d4c673d185ff696ba74c6b61d3bf327e2b3eac22c297c + languageName: node + linkType: hard + +"spdy-transport@npm:^3.0.0": + version: 3.0.0 + resolution: "spdy-transport@npm:3.0.0" + dependencies: + debug: "npm:^4.1.0" + detect-node: "npm:^2.0.4" + hpack.js: "npm:^2.1.6" + obuf: "npm:^1.1.2" + readable-stream: "npm:^3.0.6" + wbuf: "npm:^1.7.3" + checksum: 10c0/eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb + languageName: node + linkType: hard + +"spdy@npm:^4.0.2": + version: 4.0.2 + resolution: "spdy@npm:4.0.2" + dependencies: + debug: "npm:^4.1.0" + handle-thing: "npm:^2.0.0" + http-deceiver: "npm:^1.2.7" + select-hose: "npm:^2.0.0" + spdy-transport: "npm:^3.0.0" + checksum: 10c0/983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf + languageName: node + linkType: hard + +"split-on-first@npm:^1.0.0": + version: 1.1.0 + resolution: "split-on-first@npm:1.1.0" + checksum: 10c0/56df8344f5a5de8521898a5c090023df1d8b8c75be6228f56c52491e0fc1617a5236f2ac3a066adb67a73231eac216ccea7b5b4a2423a543c277cb2f48d24c29 + languageName: node + linkType: hard + +"split2@npm:^3.0.0": + version: 3.2.2 + resolution: "split2@npm:3.2.2" + dependencies: + readable-stream: "npm:^3.0.0" + checksum: 10c0/2dad5603c52b353939befa3e2f108f6e3aff42b204ad0f5f16dd12fd7c2beab48d117184ce6f7c8854f9ee5ffec6faae70d243711dd7d143a9f635b4a285de4e + languageName: node + linkType: hard + +"split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 + languageName: node + linkType: hard + +"split2@npm:~1.0.0": + version: 1.0.0 + resolution: "split2@npm:1.0.0" + dependencies: + through2: "npm:~2.0.0" + checksum: 10c0/5923936c492ebbdfed66705a25a1d53eb98d2cff740421f4b558842fdf731f108872c24fe13fa091feef8b564543bdf25c967c03fce6ea09b7119b9d3ed07eda + languageName: node + linkType: hard + +"split@npm:^1.0.0": + version: 1.0.1 + resolution: "split@npm:1.0.1" + dependencies: + through: "npm:2" + checksum: 10c0/7f489e7ed5ff8a2e43295f30a5197ffcb2d6202c9cf99357f9690d645b19c812bccf0be3ff336fea5054cda17ac96b91d67147d95dbfc31fbb5804c61962af85 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"srcset@npm:4": + version: 4.0.0 + resolution: "srcset@npm:4.0.0" + checksum: 10c0/0685c3bd2423b33831734fb71560cd8784f024895e70ee2ac2c392e30047c27ffd9481e001950fb0503f4906bc3fe963145935604edad77944d09c9800990660 + languageName: node + linkType: hard + +"sshpk@npm:^1.14.1": + version: 1.18.0 + resolution: "sshpk@npm:1.18.0" + dependencies: + asn1: "npm:~0.2.3" + assert-plus: "npm:^1.0.0" + bcrypt-pbkdf: "npm:^1.0.0" + dashdash: "npm:^1.12.0" + ecc-jsbn: "npm:~0.1.1" + getpass: "npm:^0.1.1" + jsbn: "npm:~0.1.0" + safer-buffer: "npm:^2.0.2" + tweetnacl: "npm:~0.14.0" + bin: + sshpk-conv: bin/sshpk-conv + sshpk-sign: bin/sshpk-sign + sshpk-verify: bin/sshpk-verify + checksum: 10c0/e516e34fa981cfceef45fd2e947772cc70dbd57523e5c608e2cd73752ba7f8a99a04df7c3ed751588e8d91956b6f16531590b35d3489980d1c54c38bebcd41b1 + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.6 + resolution: "ssri@npm:10.0.6" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/e5a1e23a4057a86a97971465418f22ea89bd439ac36ade88812dd920e4e61873e8abd6a9b72a03a67ef50faa00a2daf1ab745c5a15b46d03e0544a0296354227 + languageName: node + linkType: hard + +"ssri@npm:^8.0.0, ssri@npm:^8.0.1": + version: 8.0.1 + resolution: "ssri@npm:8.0.1" + dependencies: + minipass: "npm:^3.1.1" + checksum: 10c0/5cfae216ae02dcd154d1bbed2d0a60038a4b3a2fcaac3c7e47401ff4e058e551ee74cfdba618871bf168cd583db7b8324f94af6747d4303b73cd4c3f6dc5c9c2 + languageName: node + linkType: hard + +"ssri@npm:^9.0.0, ssri@npm:^9.0.1": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" + dependencies: + minipass: "npm:^3.1.1" + checksum: 10c0/c5d153ce03b5980d683ecaa4d805f6a03d8dc545736213803e168a1907650c46c08a4e5ce6d670a0205482b35c35713d9d286d9133bdd79853a406e22ad81f04 + languageName: node + linkType: hard + +"stable@npm:^0.1.8": + version: 0.1.8 + resolution: "stable@npm:0.1.8" + checksum: 10c0/df74b5883075076e78f8e365e4068ecd977af6c09da510cfc3148a303d4b87bc9aa8f7c48feb67ed4ef970b6140bd9eabba2129e28024aa88df5ea0114cba39d + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"stackframe@npm:^1.3.4": + version: 1.3.4 + resolution: "stackframe@npm:1.3.4" + checksum: 10c0/18410f7a1e0c5d211a4effa83bdbf24adbe8faa8c34db52e1cd3e89837518c592be60b60d8b7270ac53eeeb8b807cd11b399a41667f6c9abb41059c3ccc8a989 + languageName: node + linkType: hard + +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 + languageName: node + linkType: hard + +"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 + languageName: node + linkType: hard + +"std-env@npm:^3.7.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 10c0/60edf2d130a4feb7002974af3d5a5f3343558d1ccf8d9b9934d225c638606884db4a20d2fe6440a09605bca282af6b042ae8070a10490c0800d69e82e478f41e + languageName: node + linkType: hard + +"stdin-discarder@npm:^0.1.0": + version: 0.1.0 + resolution: "stdin-discarder@npm:0.1.0" + dependencies: + bl: "npm:^5.0.0" + checksum: 10c0/3bbf7f8107e49c05b4a46bd739afdd34605cf1f06a038c8b2a33d034bf146344fc0ebc5149df1e6422510dd219971a220f25b1102413ef5128fe267683fbef9d + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: "npm:^1.0.4" + checksum: 10c0/c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 + languageName: node + linkType: hard + +"stream-browserify@npm:3.0.0": + version: 3.0.0 + resolution: "stream-browserify@npm:3.0.0" + dependencies: + inherits: "npm:~2.0.4" + readable-stream: "npm:^3.5.0" + checksum: 10c0/ec3b975a4e0aa4b3dc5e70ffae3fc8fd29ac725353a14e72f213dff477b00330140ad014b163a8cbb9922dfe90803f81a5ea2b269e1bbfd8bd71511b88f889ad + languageName: node + linkType: hard + +"stream-combiner2@npm:~1.1.1": + version: 1.1.1 + resolution: "stream-combiner2@npm:1.1.1" + dependencies: + duplexer2: "npm:~0.1.0" + readable-stream: "npm:^2.0.2" + checksum: 10c0/96a14ae94493aad307176d0c0a795446cedf6c49d11d08e5d0a56bcf9f22352b0dd148b0497c8456f08b00da0867288e9750bf0286b71f6b621c0f2ba6768758 + languageName: node + linkType: hard + +"stream-http@npm:3.2.0": + version: 3.2.0 + resolution: "stream-http@npm:3.2.0" + dependencies: + builtin-status-codes: "npm:^3.0.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.6.0" + xtend: "npm:^4.0.2" + checksum: 10c0/f128fb8076d60cd548f229554b6a1a70c08a04b7b2afd4dbe7811d20f27f7d4112562eb8bce86d72a8691df3b50573228afcf1271e55e81f981536c67498bc41 + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.2": + version: 1.0.3 + resolution: "stream-shift@npm:1.0.3" + checksum: 10c0/939cd1051ca750d240a0625b106a2b988c45fb5a3be0cebe9a9858cb01bc1955e8c7b9fac17a9462976bea4a7b704e317c5c2200c70f0ca715a3363b9aa4fd3b + languageName: node + linkType: hard + +"stream-to-it@npm:^0.2.2": + version: 0.2.4 + resolution: "stream-to-it@npm:0.2.4" + dependencies: + get-iterator: "npm:^1.0.2" + checksum: 10c0/3d40440a6c73a964e3e6070daabf8f4313d8d519e7ddff45dec7f0e0a0f3df048017510c0306a1e8da26d22e5b033164be79d849c6716fb2ebce4b7893449255 + languageName: node + linkType: hard + +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 10c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab + languageName: node + linkType: hard + +"strict-uri-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "strict-uri-encode@npm:2.0.0" + checksum: 10c0/010cbc78da0e2cf833b0f5dc769e21ae74cdc5d5f5bd555f14a4a4876c8ad2c85ab8b5bdf9a722dc71a11dcd3184085e1c3c0bd50ec6bb85fffc0f28cf82597d + languageName: node + linkType: hard + +"string-hash@npm:^1.1.1": + version: 1.1.3 + resolution: "string-hash@npm:1.1.3" + checksum: 10c0/179725d7706b49fbbc0a4901703a2d8abec244140879afd5a17908497e586a6b07d738f6775450aefd9f8dd729e4a0abd073fbc6fa3bd020b7a1d2369614af88 + languageName: node + linkType: hard + +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-range@npm:~1.2, string-range@npm:~1.2.1": + version: 1.2.2 + resolution: "string-range@npm:1.2.2" + checksum: 10c0/1c291a7b47ef14e6ea1233b3152782e33f4865370fdc658bc890c397f19d3f1c845a9f332133ae2aa4ea90220b9418b6434cb9ad32f80f295de52a29ac93ea99 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string.prototype.includes@npm:^2.0.0": + version: 2.0.0 + resolution: "string.prototype.includes@npm:2.0.0" + dependencies: + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.17.5" + checksum: 10c0/32dff118c9e9dcc87e240b05462fa8ee7248d9e335c0015c1442fe18152261508a2146d9bb87ddae56abab69148a83c61dfaea33f53853812a6a2db737689ed2 + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.11, string.prototype.matchall@npm:^4.0.8": + version: 4.0.11 + resolution: "string.prototype.matchall@npm:4.0.11" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + regexp.prototype.flags: "npm:^1.5.2" + set-function-name: "npm:^2.0.2" + side-channel: "npm:^1.0.6" + checksum: 10c0/915a2562ac9ab5e01b7be6fd8baa0b2b233a0a9aa975fcb2ec13cc26f08fb9a3e85d5abdaa533c99c6fc4c5b65b914eba3d80c4aff9792a4c9fed403f28f7d9d + languageName: node + linkType: hard + +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.17.5" + checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.9": + version: 1.2.9 + resolution: "string.prototype.trim@npm:1.2.9" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimend@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"string_decoder@npm:~0.10.x": + version: 0.10.31 + resolution: "string_decoder@npm:0.10.31" + checksum: 10c0/1c628d78f974aa7539c496029f48e7019acc32487fc695464f9d6bdfec98edd7d933a06b3216bc2016918f6e75074c611d84430a53cb0e43071597d6c1ac5e25 + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: "npm:~5.1.0" + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + languageName: node + linkType: hard + +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: "npm:^1.0.0" + checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 + languageName: node + linkType: hard + +"strip-outer@npm:^1.0.1": + version: 1.0.1 + resolution: "strip-outer@npm:1.0.1" + dependencies: + escape-string-regexp: "npm:^1.0.2" + checksum: 10c0/c0f38e6f37563d878a221b1c76f0822f180ec5fc39be5ada30ee637a7d5b59d19418093bad2b4db1e69c40d7a7a7ac50828afce07276cf3d51ac8965cb140dfb + languageName: node + linkType: hard + +"strong-log-transformer@npm:^2.1.0": + version: 2.1.0 + resolution: "strong-log-transformer@npm:2.1.0" + dependencies: + duplexer: "npm:^0.1.1" + minimist: "npm:^1.2.0" + through: "npm:^2.3.4" + bin: + sl-log-transformer: bin/sl-log-transformer.js + checksum: 10c0/3c3b8aa8f34d661910563ff996412e2f527fc814e699a376854b554d4a4294ab7e285b4e2c08a080a7b19c5600a9b93a98798d3ac600fe3de545ca6605c07829 + languageName: node + linkType: hard + +"style-inject@npm:^0.3.0": + version: 0.3.0 + resolution: "style-inject@npm:0.3.0" + checksum: 10c0/3fa6a8410a4e4dfbd49a5026a4307e85bb30ee9d3691a806246d893d4f0ca9b4e8b1bfdafed3f90801d9b8c32589f5fb0b4ec7fb6ab3e8f14ac992e26d987828 + languageName: node + linkType: hard + +"style-loader@npm:3.3.0": + version: 3.3.0 + resolution: "style-loader@npm:3.3.0" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/c5ba05c6e3c5aba0a51b7ea652fdc0b173c3ec49d2eeb021aab7e1c59bea8ffba8a4b9cd6927ca21ac0533bfa638e02bb23ff2b1925c4333bae6cc6bea192702 + languageName: node + linkType: hard + +"style-loader@npm:^3.3.0": + version: 3.3.4 + resolution: "style-loader@npm:3.3.4" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/8f8027fc5c6e91400cbb60066e7db3315810f8eaa0d19b2a254936eb0bec399ba8a7043b1789da9d05ab7c3ba50faf9267765ae0bf3571e48aa34ecdc774be37 + languageName: node + linkType: hard + +"styled-jsx@npm:5.1.1": + version: 5.1.1 + resolution: "styled-jsx@npm:5.1.1" + dependencies: + client-only: "npm:0.0.1" + peerDependencies: + react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" + peerDependenciesMeta: + "@babel/core": + optional: true + babel-plugin-macros: + optional: true + checksum: 10c0/42655cdadfa5388f8a48bb282d6b450df7d7b8cf066ac37038bd0499d3c9f084815ebd9ff9dfa12a218fd4441338851db79603498d7557207009c1cf4d609835 + languageName: node + linkType: hard + +"stylehacks@npm:^5.1.1": + version: 5.1.1 + resolution: "stylehacks@npm:5.1.1" + dependencies: + browserslist: "npm:^4.21.4" + postcss-selector-parser: "npm:^6.0.4" + peerDependencies: + postcss: ^8.2.15 + checksum: 10c0/402c2b545eeda0e972f125779adddc88df11bcf3a89de60c92026bd98cd49c1abffcd5bfe41766398835e0a1c7e5e72bdb6905809ecbb60716cd8d3a32ea7cd3 + languageName: node + linkType: hard + +"stylus-loader@npm:7.1.0": + version: 7.1.0 + resolution: "stylus-loader@npm:7.1.0" + dependencies: + fast-glob: "npm:^3.2.12" + klona: "npm:^2.0.5" + normalize-path: "npm:^3.0.0" + peerDependencies: + stylus: ">=0.52.4" + webpack: ^5.0.0 + checksum: 10c0/9fd1da83df1564668f7156246970848cac2d000e5d2c61c2ec8b83fa2cc74d3606c5b2860ce860791290ed3183041c4ea3b01d63c45bf413113f8c3a51324fe5 + languageName: node + linkType: hard + +"stylus-loader@npm:^7.1.0": + version: 7.1.3 + resolution: "stylus-loader@npm:7.1.3" + dependencies: + fast-glob: "npm:^3.2.12" + normalize-path: "npm:^3.0.0" + peerDependencies: + stylus: ">=0.52.4" + webpack: ^5.0.0 + checksum: 10c0/decb84902cf77f4e8bed014f8c112213e7aa1d9865f7a5e36993c83d4255a147c0841fe687c2354f82291c31091364bf8f2f1bffeaefbb9c9a1d09b5b9b4b7f0 + languageName: node + linkType: hard + +"stylus@npm:0.55.0, stylus@npm:^0.55.0": + version: 0.55.0 + resolution: "stylus@npm:0.55.0" + dependencies: + css: "npm:^3.0.0" + debug: "npm:~3.1.0" + glob: "npm:^7.1.6" + mkdirp: "npm:~1.0.4" + safer-buffer: "npm:^2.1.2" + sax: "npm:~1.2.4" + semver: "npm:^6.3.0" + source-map: "npm:^0.7.3" + bin: + stylus: bin/stylus + checksum: 10c0/84c5dfe9457226144617600a7b28e8ea79a4f4d777fbbd54f119a49d5ea54d927da6802b837814b2b261ad7d5bc5baf9c605b30a4404c5ed81305cee01719872 + languageName: node + linkType: hard + +"superstruct@npm:^1.0.3": + version: 1.0.4 + resolution: "superstruct@npm:1.0.4" + checksum: 10c0/d355f1a96fa314e9df217aa371e8f22854644e7b600b7b0faa36860a8e50f61a60a6f1189ecf166171bf438aa6581bbd0d3adae1a65f03a3c43c62fd843e925c + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + +"supports-hyperlinks@npm:^2.3.0": + version: 2.3.0 + resolution: "supports-hyperlinks@npm:2.3.0" + dependencies: + has-flag: "npm:^4.0.0" + supports-color: "npm:^7.0.0" + checksum: 10c0/4057f0d86afb056cd799602f72d575b8fdd79001c5894bcb691176f14e870a687e7981e50bc1484980e8b688c6d5bcd4931e1609816abb5a7dc1486b7babf6a1 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"sver@npm:^1.8.4": + version: 1.8.4 + resolution: "sver@npm:1.8.4" + dependencies: + semver: "npm:^6.3.0" + dependenciesMeta: + semver: + optional: true + checksum: 10c0/94c4ef9e59be9014e7ea7efa687b858152be0752e21c0dce3af1133504e02335a5c3f75a2791bcf5e5a28b243d2759cd5d7c79e4f4b94b64f848ab9b26d36239 + languageName: node + linkType: hard + +"svg-parser@npm:^2.0.4": + version: 2.0.4 + resolution: "svg-parser@npm:2.0.4" + checksum: 10c0/02f6cb155dd7b63ebc2f44f36365bc294543bebb81b614b7628f1af3c54ab64f7e1cec20f06e252bf95bdde78441ae295a412c68ad1678f16a6907d924512b7a + languageName: node + linkType: hard + +"svgo@npm:^2.4.0, svgo@npm:^2.7.0, svgo@npm:^2.8.0": + version: 2.8.0 + resolution: "svgo@npm:2.8.0" + dependencies: + "@trysound/sax": "npm:0.2.0" + commander: "npm:^7.2.0" + css-select: "npm:^4.1.3" + css-tree: "npm:^1.1.3" + csso: "npm:^4.2.0" + picocolors: "npm:^1.0.0" + stable: "npm:^0.1.8" + bin: + svgo: bin/svgo + checksum: 10c0/0741f5d5cad63111a90a0ce7a1a5a9013f6d293e871b75efe39addb57f29a263e45294e485a4d2ff9cc260a5d142c8b5937b2234b4ef05efdd2706fb2d360ecc + languageName: node + linkType: hard + +"symbol-observable@npm:4.0.0": + version: 4.0.0 + resolution: "symbol-observable@npm:4.0.0" + checksum: 10c0/5e9a3ab08263a6be8cbee76587ad5880dcc62a47002787ed5ebea56b1eb30dc87da6f0183d67e88286806799fbe21c69077fbd677be4be2188e92318d6c6f31d + languageName: node + linkType: hard + +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 10c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 + languageName: node + linkType: hard + +"system-architecture@npm:^0.1.0": + version: 0.1.0 + resolution: "system-architecture@npm:0.1.0" + checksum: 10c0/1969974ea5d31a9ac7c38f2657cfe8255b36f9e1d5ba3c58cb84c24fbeedf562778b8511f18a0abe6d70ae90148cfcaf145ecf26e37c0a53a3829076f3238cbb + languageName: node + linkType: hard + +"tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + languageName: node + linkType: hard + +"tar-fs@npm:^2.0.0": + version: 2.1.1 + resolution: "tar-fs@npm:2.1.1" + dependencies: + chownr: "npm:^1.1.1" + mkdirp-classic: "npm:^0.5.2" + pump: "npm:^3.0.0" + tar-stream: "npm:^2.1.4" + checksum: 10c0/871d26a934bfb7beeae4c4d8a09689f530b565f79bd0cf489823ff0efa3705da01278160da10bb006d1a793fa0425cf316cec029b32a9159eacbeaff4965fb6d + languageName: node + linkType: hard + +"tar-stream@npm:^2.1.4, tar-stream@npm:~2.2.0": + version: 2.2.0 + resolution: "tar-stream@npm:2.2.0" + dependencies: + bl: "npm:^4.0.3" + end-of-stream: "npm:^1.4.1" + fs-constants: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + checksum: 10c0/2f4c910b3ee7196502e1ff015a7ba321ec6ea837667220d7bcb8d0852d51cb04b87f7ae471008a6fb8f5b1a1b5078f62f3a82d30c706f20ada1238ac797e7692 + languageName: node + linkType: hard + +"tar@npm:6.1.11": + version: 6.1.11 + resolution: "tar@npm:6.1.11" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^3.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/5a016f5330f43815420797b87ade578e2ea60affd47439c988a3fc8f7bb6b36450d627c31ba6a839346fae248b4c8c12bb06bb0716211f37476838c7eff91f05 + languageName: node + linkType: hard + +"tar@npm:^6.0.2, tar@npm:^6.1.0, tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.1": + version: 6.2.1 + resolution: "tar@npm:6.2.1" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + languageName: node + linkType: hard + +"temp-dir@npm:^2.0.0": + version: 2.0.0 + resolution: "temp-dir@npm:2.0.0" + checksum: 10c0/b1df969e3f3f7903f3426861887ed76ba3b495f63f6d0c8e1ce22588679d9384d336df6064210fda14e640ed422e2a17d5c40d901f60e161c99482d723f4d309 + languageName: node + linkType: hard + +"tempy@npm:^1.0.0": + version: 1.0.1 + resolution: "tempy@npm:1.0.1" + dependencies: + del: "npm:^6.0.0" + is-stream: "npm:^2.0.0" + temp-dir: "npm:^2.0.0" + type-fest: "npm:^0.16.0" + unique-string: "npm:^2.0.0" + checksum: 10c0/864a1cf1b5536dc21e84ae45dbbc3ba4dd2c7ec1674d895f99c349cf209df959a53d797ca38d0b2cf69c7684d565fde5cfc67faaa63b7208ffb21d454b957472 + languageName: node + linkType: hard + +"term-size@npm:^2.2.1": + version: 2.2.1 + resolution: "term-size@npm:2.2.1" + checksum: 10c0/89f6bba1d05d425156c0910982f9344d9e4aebf12d64bfa1f460d93c24baa7bc4c4a21d355fbd7153c316433df0538f64d0ae6e336cc4a69fdda4f85d62bc79d + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.10, terser-webpack-plugin@npm:^5.3.3, terser-webpack-plugin@npm:^5.3.7": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.20" + jest-worker: "npm:^27.4.5" + schema-utils: "npm:^3.1.1" + serialize-javascript: "npm:^6.0.1" + terser: "npm:^5.26.0" + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 10c0/66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91 + languageName: node + linkType: hard + +"terser@npm:5.17.7": + version: 5.17.7 + resolution: "terser@npm:5.17.7" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10c0/864154a1750daf516012e5add4f0749bfc71e8f4f918973ec3d504db6a148be976adf46ae490e795173eeff59ec579d7d464bb6354c1bb71f8e14ff398409aed + languageName: node + linkType: hard + +"terser@npm:^5.26.0": + version: 5.34.1 + resolution: "terser@npm:5.34.1" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10c0/51c7d704c5c4ae88bf937124112c9972aed4e1fd29d805cc2d86e0f54cd631ecd4e69db5bb3c1e3b450c741c86e2313328bea0fde925329e8a31a07a7941723c + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + +"text-encoding-utf-8@npm:^1.0.2": + version: 1.0.2 + resolution: "text-encoding-utf-8@npm:1.0.2" + checksum: 10c0/87a64b394c850e8387c2ca7fc6929a26ce97fb598f1c55cd0fdaec4b8e2c3ed6770f65b2f3309c9175ef64ac5e403c8e48b53ceeb86d2897940c5e19cc00bb99 + languageName: node + linkType: hard + +"text-extensions@npm:^1.0.0": + version: 1.9.0 + resolution: "text-extensions@npm:1.9.0" + checksum: 10c0/9ad5a9f723a871e2d884e132d7e93f281c60b5759c95f3f6b04704856548715d93a36c10dbaf5f12b91bf405f0cf3893bf169d4d143c0f5509563b992d385443 + languageName: node + linkType: hard + +"text-extensions@npm:^2.0.0": + version: 2.4.0 + resolution: "text-extensions@npm:2.4.0" + checksum: 10c0/6790e7ee72ad4d54f2e96c50a13e158bb57ce840dddc770e80960ed1550115c57bdc2cee45d5354d7b4f269636f5ca06aab4d6e0281556c841389aa837b23fcb + languageName: node + linkType: hard + +"text-table@npm:0.2.0, text-table@npm:^0.2.0, text-table@npm:~0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"thread-stream@npm:^0.15.1": + version: 0.15.2 + resolution: "thread-stream@npm:0.15.2" + dependencies: + real-require: "npm:^0.1.0" + checksum: 10c0/f92f1b5a9f3f35a72c374e3fecbde6f14d69d5325ad9ce88930af6ed9c7c1ec814367716b712205fa4f06242ae5dd97321ae2c00b43586590ed4fa861f3c29ae + languageName: node + linkType: hard + +"throttleit@npm:^1.0.0": + version: 1.0.1 + resolution: "throttleit@npm:1.0.1" + checksum: 10c0/4d41a1bf467646b1aa7bec0123b78452a0e302d7344f6a67e43e68434f0a02ea3ba44df050a40c69adeb9cae3cbf6b36b38cfe94bcc3c4a8243c9b63e38e059b + languageName: node + linkType: hard + +"through2@npm:^4.0.0": + version: 4.0.2 + resolution: "through2@npm:4.0.2" + dependencies: + readable-stream: "npm:3" + checksum: 10c0/3741564ae99990a4a79097fe7a4152c22348adc4faf2df9199a07a66c81ed2011da39f631e479fdc56483996a9d34a037ad64e76d79f18c782ab178ea9b6778c + languageName: node + linkType: hard + +"through2@npm:~2.0.0": + version: 2.0.5 + resolution: "through2@npm:2.0.5" + dependencies: + readable-stream: "npm:~2.3.6" + xtend: "npm:~4.0.1" + checksum: 10c0/cbfe5b57943fa12b4f8c043658c2a00476216d79c014895cef1ac7a1d9a8b31f6b438d0e53eecbb81054b93128324a82ecd59ec1a4f91f01f7ac113dcb14eade + languageName: node + linkType: hard + +"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.4, through@npm:^2.3.6, through@npm:^2.3.8": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc + languageName: node + linkType: hard + +"thunky@npm:^1.0.2": + version: 1.1.0 + resolution: "thunky@npm:1.1.0" + checksum: 10c0/369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 + languageName: node + linkType: hard + +"timeout-abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "timeout-abort-controller@npm:3.0.0" + dependencies: + retimer: "npm:^3.0.0" + checksum: 10c0/aa198aee2e69215c1a212d8af1b3dd2dcc8f78d593978114fdba51844281830289fb85c741240c9ac2403426374793e4367e1ae588806ee673f7be18bd8a3e82 + languageName: node + linkType: hard + +"timsort@npm:^0.3.0": + version: 0.3.0 + resolution: "timsort@npm:0.3.0" + checksum: 10c0/571b2054a0db3cf80eb255f8609a1f798cae9176f9ec6e3fbd03d64186c015cc9e1e75b88ba38e1d71aebcc03a931352522c7387dcb90caeb148375c7bc106f4 + languageName: node + linkType: hard + +"tiny-relative-date@npm:^1.3.0": + version: 1.3.0 + resolution: "tiny-relative-date@npm:1.3.0" + checksum: 10c0/70a0818793bd00345771a4ddfa9e339c102f891766c5ebce6a011905a1a20e30212851c9ffb11b52b79e2445be32bc21d164c4c6d317aef730766b2a61008f30 + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: "npm:~1.0.2" + checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + languageName: node + linkType: hard + +"tmp@npm:~0.2.1": + version: 0.2.3 + resolution: "tmp@npm:0.2.3" + checksum: 10c0/3e809d9c2f46817475b452725c2aaa5d11985cf18d32a7a970ff25b568438e2c076c2e8609224feef3b7923fa9749b74428e3e634f6b8e520c534eef2fd24125 + languageName: node + linkType: hard + +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"toggle-selection@npm:^1.0.6": + version: 1.0.6 + resolution: "toggle-selection@npm:1.0.6" + checksum: 10c0/f2cf1f2c70f374fd87b0cdc8007453ba9e981c4305a8bf4eac10a30e62ecdfd28bca7d18f8f15b15a506bf8a7bfb20dbe3539f0fcf2a2c8396c1a78d53e1f179 + languageName: node + linkType: hard + +"toidentifier@npm:1.0.0": + version: 1.0.0 + resolution: "toidentifier@npm:1.0.0" + checksum: 10c0/27a37b8b21126e7216d40c02f410065b1de35b0f844368d0ccaabba7987595703006d45e5c094b086220cbbc5864d4b99766b460110e4bc15b9db574c5c58be2 + languageName: node + linkType: hard + +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 + languageName: node + linkType: hard + +"tough-cookie@npm:^4.1.2, tough-cookie@npm:^4.1.3": + version: 4.1.4 + resolution: "tough-cookie@npm:4.1.4" + dependencies: + psl: "npm:^1.1.33" + punycode: "npm:^2.1.1" + universalify: "npm:^0.2.0" + url-parse: "npm:^1.5.3" + checksum: 10c0/aca7ff96054f367d53d1e813e62ceb7dd2eda25d7752058a74d64b7266fd07be75908f3753a32ccf866a2f997604b414cfb1916d6e7f69bc64d9d9939b0d6c45 + languageName: node + linkType: hard + +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: "npm:^2.1.1" + checksum: 10c0/cdc47cad3a9d0b6cb293e39ccb1066695ae6fdd39b9e4f351b010835a1f8b4f3a6dc3a55e896b421371187f22b48d7dac1b693de4f6551bdef7b6ab6735dfe3b + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"traverse@npm:0.6.8": + version: 0.6.8 + resolution: "traverse@npm:0.6.8" + checksum: 10c0/d97a71be2ca895ff6b813840db37f9b5d88e30f7c4c4bd5b22c5c68ebc22d4a10c4599e02c51414523cc7ada3432e118ea62ebd53cf6f3a4f3aa951bd45072a9 + languageName: node + linkType: hard + +"tree-kill@npm:1.2.2": + version: 1.2.2 + resolution: "tree-kill@npm:1.2.2" + bin: + tree-kill: cli.js + checksum: 10c0/7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2 + languageName: node + linkType: hard + +"treeverse@npm:^2.0.0": + version: 2.0.0 + resolution: "treeverse@npm:2.0.0" + checksum: 10c0/be37fd0d4d62c62fe7f4bfcac164d82f11456184dc397473896ed2efcdf9b307c3e433e1d275a1dd924fc7e66aa280ab36be8b8966b87f23e0f545417eb52900 + languageName: node + linkType: hard + +"trim-newlines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-newlines@npm:3.0.1" + checksum: 10c0/03cfefde6c59ff57138412b8c6be922ecc5aec30694d784f2a65ef8dcbd47faef580b7de0c949345abdc56ec4b4abf64dd1e5aea619b200316e471a3dd5bf1f6 + languageName: node + linkType: hard + +"trim-repeated@npm:^1.0.0": + version: 1.0.0 + resolution: "trim-repeated@npm:1.0.0" + dependencies: + escape-string-regexp: "npm:^1.0.2" + checksum: 10c0/89acada0142ed0cdb113615a3e82fdb09e7fdb0e3504ded62762dd935bc27debfcc38edefa497dc7145d8dc8602d40dd9eec891e0ea6c28fa0cc384200b692db + languageName: node + linkType: hard + +"true-myth@npm:^4.1.0": + version: 4.1.1 + resolution: "true-myth@npm:4.1.1" + checksum: 10c0/ac83ac82f969129d5f002dcc489b86e28e59ee4149641b341b0176e9407786823c83702fe4b9ae9c0f9593f29a98c931ee175789d33e884f99c47e9c16e80adb + languageName: node + linkType: hard + +"ts-api-utils@npm:^1.0.1": + version: 1.3.0 + resolution: "ts-api-utils@npm:1.3.0" + peerDependencies: + typescript: ">=4.2.0" + checksum: 10c0/f54a0ba9ed56ce66baea90a3fa087a484002e807f28a8ccb2d070c75e76bde64bd0f6dce98b3802834156306050871b67eec325cb4e918015a360a3f0868c77c + languageName: node + linkType: hard + +"ts-essentials@npm:^10.0.0": + version: 10.0.2 + resolution: "ts-essentials@npm:10.0.2" + peerDependencies: + typescript: ">=4.5.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/660d83eb089f41975fd6137732d84913f8c68405d986613c92161b2f638529a15f2e0cb49d8a0eb318750ec22bd93907e7d277e07161bf280e1b4c1ff6f36654 + languageName: node + linkType: hard + +"ts-essentials@npm:^7.0.3": + version: 7.0.3 + resolution: "ts-essentials@npm:7.0.3" + peerDependencies: + typescript: ">=3.7.0" + checksum: 10c0/ea1919534ec6ce4ca4d9cb0ff1ab8e053509237da8d4298762ab3bfba4e78ca5649a599ce78a5c7c2624f3a7a971f62b265b7b0c3c881336e4fa6acaf6f37544 + languageName: node + linkType: hard + +"ts-jest@npm:29.1.0": + version: 29.1.0 + resolution: "ts-jest@npm:29.1.0" + dependencies: + bs-logger: "npm:0.x" + fast-json-stable-stringify: "npm:2.x" + jest-util: "npm:^29.0.0" + json5: "npm:^2.2.3" + lodash.memoize: "npm:4.x" + make-error: "npm:1.x" + semver: "npm:7.x" + yargs-parser: "npm:^21.0.1" + peerDependencies: + "@babel/core": ">=7.0.0-beta.0 <8" + "@jest/types": ^29.0.0 + babel-jest: ^29.0.0 + jest: ^29.0.0 + typescript: ">=4.3 <6" + peerDependenciesMeta: + "@babel/core": + optional: true + "@jest/types": + optional: true + babel-jest: + optional: true + esbuild: + optional: true + bin: + ts-jest: cli.js + checksum: 10c0/504d77b13157a4d2f1eebbd0e0f21f2db65fc28039f107fd73453655c029adccba5b22bdd4de0efa58707c1bbd34a67a1a5cceb794e91c3c2c7be4f904c79f9f + languageName: node + linkType: hard + +"ts-jest@npm:^29.0.0": + version: 29.2.5 + resolution: "ts-jest@npm:29.2.5" + dependencies: + bs-logger: "npm:^0.2.6" + ejs: "npm:^3.1.10" + fast-json-stable-stringify: "npm:^2.1.0" + jest-util: "npm:^29.0.0" + json5: "npm:^2.2.3" + lodash.memoize: "npm:^4.1.2" + make-error: "npm:^1.3.6" + semver: "npm:^7.6.3" + yargs-parser: "npm:^21.1.1" + peerDependencies: + "@babel/core": ">=7.0.0-beta.0 <8" + "@jest/transform": ^29.0.0 + "@jest/types": ^29.0.0 + babel-jest: ^29.0.0 + jest: ^29.0.0 + typescript: ">=4.3 <6" + peerDependenciesMeta: + "@babel/core": + optional: true + "@jest/transform": + optional: true + "@jest/types": + optional: true + babel-jest: + optional: true + esbuild: + optional: true + bin: + ts-jest: cli.js + checksum: 10c0/acb62d168faec073e64b20873b583974ba8acecdb94681164eb346cef82ade8fb481c5b979363e01a97ce4dd1e793baf64d9efd90720bc941ad7fc1c3d6f3f68 + languageName: node + linkType: hard + +"ts-loader@npm:^9.3.1": + version: 9.5.1 + resolution: "ts-loader@npm:9.5.1" + dependencies: + chalk: "npm:^4.1.0" + enhanced-resolve: "npm:^5.0.0" + micromatch: "npm:^4.0.0" + semver: "npm:^7.3.4" + source-map: "npm:^0.7.4" + peerDependencies: + typescript: "*" + webpack: ^5.0.0 + checksum: 10c0/7dc1e3e5d3d032b6ef27836032f02c57077dfbcdf5817cbbc16b7b8609e7ed1d0ec157a03eaac07960161d8ad4a9e030c4d6722fe33540cf6ee75156c7f9c33d + languageName: node + linkType: hard + +"ts-morph@npm:^13.0.1": + version: 13.0.3 + resolution: "ts-morph@npm:13.0.3" + dependencies: + "@ts-morph/common": "npm:~0.12.3" + code-block-writer: "npm:^11.0.0" + checksum: 10c0/9d7fa1a29be3996b209e19d3e0c80eacd088afa76cd7c12b4b3d8a6a08d282d5f17e01cedf8bd841ad549a5df6580b876ea10597b3273e2bb49b85ffa2044d99 + languageName: node + linkType: hard + +"ts-node@npm:10.9.1": + version: 10.9.1 + resolution: "ts-node@npm:10.9.1" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + 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 + 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 + checksum: 10c0/95187932fb83f3901e22546bd2feeac7d2feb4f412f42ac3a595f049a23e8dcf70516dffb51866391228ea2dbcfaea039e250fb2bb334d48a86ab2b6aea0ae2d + languageName: node + linkType: hard + +"ts-prune@npm:0.10.3": + version: 0.10.3 + resolution: "ts-prune@npm:0.10.3" + dependencies: + commander: "npm:^6.2.1" + cosmiconfig: "npm:^7.0.1" + json5: "npm:^2.1.3" + lodash: "npm:^4.17.21" + true-myth: "npm:^4.1.0" + ts-morph: "npm:^13.0.1" + bin: + ts-prune: lib/index.js + checksum: 10c0/fecb609e4c1f207a23f8d82946cd654242a818ca28d078cebf7b8408f0b20c2245e1482019745117b7ae0e015b76aaba8d7382cd5429ee9fa48829253981b448 + languageName: node + linkType: hard + +"tsconfig-paths-webpack-plugin@npm:4.0.0": + version: 4.0.0 + resolution: "tsconfig-paths-webpack-plugin@npm:4.0.0" + dependencies: + chalk: "npm:^4.1.0" + enhanced-resolve: "npm:^5.7.0" + tsconfig-paths: "npm:^4.0.0" + checksum: 10c0/60e84638014ace799b53db656105952497910c9bca1a80d01a4c079bed6a27c0c6d86e63b55fe58a5155920befb1a21fad291d2d48240e0322d02030783be1a5 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.14.1, tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^4.0.0, tsconfig-paths@npm:^4.1.2": + version: 4.2.0 + resolution: "tsconfig-paths@npm:4.2.0" + dependencies: + json5: "npm:^2.2.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea + languageName: node + linkType: hard + +"tslib@npm:1.14.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:2.5.3": + version: 2.5.3 + resolution: "tslib@npm:2.5.3" + checksum: 10c0/4cb1817d34fae5b27d146e6c4a468d4155097d95c1335d0bc9690f11f33e63844806bf4ed6d97c30c72b8d85261b66cbbe16d871d9c594ac05701ec83e62a607 + languageName: node + linkType: hard + +"tslib@npm:2.7.0, tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: "npm:^1.8.1" + 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" + checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 + languageName: node + linkType: hard + +"tuf-js@npm:^1.1.7": + version: 1.1.7 + resolution: "tuf-js@npm:1.1.7" + dependencies: + "@tufjs/models": "npm:1.0.4" + debug: "npm:^4.3.4" + make-fetch-happen: "npm:^11.1.1" + checksum: 10c0/7c4980ada7a55f2670b895e8d9345ef2eec4a471c47f6127543964a12a8b9b69f16002990e01a138cd775aa954880b461186a6eaf7b86633d090425b4273375b + languageName: node + linkType: hard + +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/4c7a1b813e7beae66fdbf567a65ec6d46313643753d0beefb3c7973d66fcec3a1e7f39759f0a0b4465883499c6dc8b0750ab8b287399af2e583823e40410a17a + languageName: node + linkType: hard + +"tweetnacl@npm:1.0.3, tweetnacl@npm:^1.0.2": + version: 1.0.3 + resolution: "tweetnacl@npm:1.0.3" + checksum: 10c0/069d9df51e8ad4a89fbe6f9806c68e06c65be3c7d42f0701cc43dba5f0d6064686b238bbff206c5addef8854e3ce00c643bff59432ea2f2c639feab0ee1a93f9 + languageName: node + linkType: hard + +"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": + version: 0.14.5 + resolution: "tweetnacl@npm:0.14.5" + checksum: 10c0/4612772653512c7bc19e61923fbf42903f5e0389ec76a4a1f17195859d114671ea4aa3b734c2029ce7e1fa7e5cc8b80580f67b071ecf0b46b5636d030a0102a2 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + +"type-fest@npm:^0.16.0": + version: 0.16.0 + resolution: "type-fest@npm:0.16.0" + checksum: 10c0/6b4d846534e7bcb49a6160b068ffaed2b62570d989d909ac3f29df5ef1e993859f890a4242eebe023c9e923f96adbcb3b3e88a198c35a1ee9a731e147a6839c3 + languageName: node + linkType: hard + +"type-fest@npm:^0.18.0": + version: 0.18.1 + resolution: "type-fest@npm:0.18.1" + checksum: 10c0/303f5ecf40d03e1d5b635ce7660de3b33c18ed8ebc65d64920c02974d9e684c72483c23f9084587e9dd6466a2ece1da42ddc95b412a461794dd30baca95e2bac + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + +"type-fest@npm:^0.6.0": + version: 0.6.0 + resolution: "type-fest@npm:0.6.0" + checksum: 10c0/0c585c26416fce9ecb5691873a1301b5aff54673c7999b6f925691ed01f5b9232db408cdbb0bd003d19f5ae284322523f44092d1f81ca0a48f11f7cf0be8cd38 + languageName: node + linkType: hard + +"type-fest@npm:^0.8.1": + version: 0.8.1 + resolution: "type-fest@npm:0.8.1" + checksum: 10c0/dffbb99329da2aa840f506d376c863bd55f5636f4741ad6e65e82f5ce47e6914108f44f340a0b74009b0cb5d09d6752ae83203e53e98b1192cf80ecee5651636 + languageName: node + linkType: hard + +"type-fest@npm:^3.8.0": + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 + languageName: node + linkType: hard + +"type-fest@npm:^4.2.0": + version: 4.26.1 + resolution: "type-fest@npm:4.26.1" + checksum: 10c0/d2719ff8d380befe8a3c61068f37f28d6fa2849fd140c5d2f0f143099e371da6856aad7c97e56b83329d45bfe504afe9fd936a7cff600cc0d46aa9ffb008d6c6 + languageName: node + linkType: hard + +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: "npm:0.3.0" + mime-types: "npm:~2.1.24" + checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.6": + version: 1.0.6 + resolution: "typed-array-length@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77 + languageName: node + linkType: hard + +"typed-assert@npm:^1.0.8": + version: 1.0.9 + resolution: "typed-assert@npm:1.0.9" + checksum: 10c0/9a31b03e6a5f07f13267f34dbbd125274b3b9e5107b906d76b2e401f6f60ebdea01124be8e3c064549938f57ac4e1b4f5a9c04e32bc8974b2f8cc74825e8b83e + languageName: node + linkType: hard + +"typedarray-to-buffer@npm:~1.0.0": + version: 1.0.4 + resolution: "typedarray-to-buffer@npm:1.0.4" + checksum: 10c0/8c68977ce76914896f83426fef5fbf5eaae16d336ed95678d2f4e95c6ee0161993ce8bfef0dae0eb35769eb4eec83c0e57f2e5e002f457ae9aa973dc830d6479 + languageName: node + linkType: hard + +"typedarray@npm:^0.0.6": + version: 0.0.6 + resolution: "typedarray@npm:0.0.6" + checksum: 10c0/6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 + languageName: node + linkType: hard + +"typescript@npm:*, typescript@npm:^5.6.2": + version: 5.6.2 + resolution: "typescript@npm:5.6.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/3ed8297a8c7c56b7fec282532503d1ac795239d06e7c4966b42d4330c6cf433a170b53bcf93a130a7f14ccc5235de5560df4f1045eb7f3550b46ebed16d3c5e5 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A*#optional!builtin, typescript@patch:typescript@npm%3A^5.6.2#optional!builtin": + version: 5.6.2 + resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/94eb47e130d3edd964b76da85975601dcb3604b0c848a36f63ac448d0104e93819d94c8bdf6b07c00120f2ce9c05256b8b6092d23cf5cf1c6fa911159e4d572f + languageName: node + linkType: hard + +"ua-parser-js@npm:^1.0.2": + version: 1.0.39 + resolution: "ua-parser-js@npm:1.0.39" + bin: + ua-parser-js: script/cli.js + checksum: 10c0/c6452b0c683000f10975cb0a7e74cb1119ea95d4522ae85f396fa53b0b17884358a24ffdd86a66030c6b2981bdc502109a618c79fdaa217ee9032c9e46fcc78a + languageName: node + linkType: hard + +"uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": + version: 1.0.6 + resolution: "uc.micro@npm:1.0.6" + checksum: 10c0/9bde2afc6f2e24b899db6caea47dae778b88862ca76688d844ef6e6121dec0679c152893a74a6cfbd2e6fde34654e6bd8424fee8e0166cdfa6c9ae5d42b8a17b + languageName: node + linkType: hard + +"ufo@npm:^1.5.3, ufo@npm:^1.5.4": + version: 1.5.4 + resolution: "ufo@npm:1.5.4" + checksum: 10c0/b5dc4dc435c49c9ef8890f1b280a19ee4d0954d1d6f9ab66ce62ce64dd04c7be476781531f952a07c678d51638d02ad4b98e16237be29149295b0f7c09cda765 + languageName: node + linkType: hard + +"uglify-js@npm:^3.1.4": + version: 3.19.3 + resolution: "uglify-js@npm:3.19.3" + bin: + uglifyjs: bin/uglifyjs + checksum: 10c0/83b0a90eca35f778e07cad9622b80c448b6aad457c9ff8e568afed978212b42930a95f9e1be943a1ffa4258a3340fbb899f41461131c05bb1d0a9c303aed8479 + languageName: node + linkType: hard + +"uint8-varint@npm:^2.0.1": + version: 2.0.4 + resolution: "uint8-varint@npm:2.0.4" + dependencies: + uint8arraylist: "npm:^2.0.0" + uint8arrays: "npm:^5.0.0" + checksum: 10c0/850bce72c2b639d317db6af2c30544f7f8c6451fa328d674aca74d7e263a9510acd3af555ed04ffbc20b9ff68fd5d2e06b91a5c9ffde781cf6ee6233606f34dc + languageName: node + linkType: hard + +"uint8arraylist@npm:^2.0.0, uint8arraylist@npm:^2.1.2": + version: 2.4.8 + resolution: "uint8arraylist@npm:2.4.8" + dependencies: + uint8arrays: "npm:^5.0.1" + checksum: 10c0/a997289ad66d4ffff24d85524b70af9fb6914ef1657400907a792afbff4c4600e7dde7ab3de83da8309c7b22c093c93bc8a95b3d288eeac4c935133bfb925bac + languageName: node + linkType: hard + +"uint8arrays@npm:3.1.0": + version: 3.1.0 + resolution: "uint8arrays@npm:3.1.0" + dependencies: + multiformats: "npm:^9.4.2" + checksum: 10c0/e54e64593a76541330f0fea97b1b5dea6becbbec3572b9bb88863d064f2630bede4d42eafd457f19c6ef9125f50bfc61053d519c4d71b59c3b7566a0691e3ba2 + languageName: node + linkType: hard + +"uint8arrays@npm:^3.0.0, uint8arrays@npm:^3.1.0": + version: 3.1.1 + resolution: "uint8arrays@npm:3.1.1" + dependencies: + multiformats: "npm:^9.4.2" + checksum: 10c0/9946668e04f29b46bbb73cca3d190f63a2fbfe5452f8e6551ef4257d9d597b72da48fa895c15ef2ef772808a5335b3305f69da5f13a09f8c2924896b409565ff + languageName: node + linkType: hard + +"uint8arrays@npm:^4.0.2": + version: 4.0.10 + resolution: "uint8arrays@npm:4.0.10" + dependencies: + multiformats: "npm:^12.0.1" + checksum: 10c0/6ba22dd93d125a1359fdf8e4ea26bfecaf33ce22d7de07feec3e1c2c1198b5d3a5760f038caec916a01b9fcc3206ae04230b0d6481694c2e17b5014614a6cf02 + languageName: node + linkType: hard + +"uint8arrays@npm:^5.0.0, uint8arrays@npm:^5.0.1, uint8arrays@npm:^5.0.2, uint8arrays@npm:^5.1.0": + version: 5.1.0 + resolution: "uint8arrays@npm:5.1.0" + dependencies: + multiformats: "npm:^13.0.0" + checksum: 10c0/e7587f97d03a17a608becd01b3ca52aa6db43e7ee6156c18b278c715a62f4f9e62ef2fe9432a3cd02791b6222a17578476a20b8e3ea37dd3b5ce454c6a8782a9 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 + languageName: node + linkType: hard + +"uncrypto@npm:^0.1.3": + version: 0.1.3 + resolution: "uncrypto@npm:0.1.3" + checksum: 10c0/74a29afefd76d5b77bedc983559ceb33f5bbc8dada84ff33755d1e3355da55a4e03a10e7ce717918c436b4dfafde1782e799ebaf2aadd775612b49f7b5b2998e + languageName: node + linkType: hard + +"underscore@npm:~1.13.2": + version: 1.13.7 + resolution: "underscore@npm:1.13.7" + checksum: 10c0/fad2b4aac48847674aaf3c30558f383399d4fdafad6dd02dd60e4e1b8103b52c5a9e5937e0cc05dacfd26d6a0132ed0410ab4258241240757e4a4424507471cd + languageName: node + linkType: hard + +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 + languageName: node + linkType: hard + +"undici@npm:^5.12.0": + version: 5.28.4 + resolution: "undici@npm:5.28.4" + dependencies: + "@fastify/busboy": "npm:^2.0.0" + checksum: 10c0/08d0f2596553aa0a54ca6e8e9c7f45aef7d042c60918564e3a142d449eda165a80196f6ef19ea2ef2e6446959e293095d8e40af1236f0d67223b06afac5ecad7 + languageName: node + linkType: hard + +"unenv@npm:^1.10.0": + version: 1.10.0 + resolution: "unenv@npm:1.10.0" + dependencies: + consola: "npm:^3.2.3" + defu: "npm:^6.1.4" + mime: "npm:^3.0.0" + node-fetch-native: "npm:^1.6.4" + pathe: "npm:^1.1.2" + checksum: 10c0/354180647e21204b6c303339e7364b920baadb2672b540a88af267bc827636593e0bf79f59753dcc6b7ab5d4c83e71d69a9171a3596befb8bf77e0bb3c7612b9 + languageName: node + linkType: hard + +"unfetch@npm:^4.2.0": + version: 4.2.0 + resolution: "unfetch@npm:4.2.0" + checksum: 10c0/a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.1 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" + checksum: 10c0/f83bc492fdbe662860795ef37a85910944df7310cac91bd778f1c19ebc911e8b9cde84e703de631e5a2fcca3905e39896f8fc5fc6a44ddaf7f4aff1cda24f381 + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: "npm:^2.0.0" + unicode-property-aliases-ecmascript: "npm:^2.0.0" + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.2.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" + checksum: 10c0/1d0a2deefd97974ddff5b7cb84f9884177f4489928dfcebb4b2b091d6124f2739df51fc6ea15958e1b5637ac2a24cff9bf21ea81e45335086ac52c0b4c717d6d + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 + languageName: node + linkType: hard + +"unique-filename@npm:^1.1.1": + version: 1.1.1 + resolution: "unique-filename@npm:1.1.1" + dependencies: + unique-slug: "npm:^2.0.0" + checksum: 10c0/d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 + languageName: node + linkType: hard + +"unique-filename@npm:^2.0.0": + version: 2.0.1 + resolution: "unique-filename@npm:2.0.1" + dependencies: + unique-slug: "npm:^3.0.0" + checksum: 10c0/55d95cd670c4a86117ebc34d394936d712d43b56db6bc511f9ca00f666373818bf9f075fb0ab76bcbfaf134592ef26bb75aad20786c1ff1ceba4457eaba90fb8 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^2.0.0": + version: 2.0.2 + resolution: "unique-slug@npm:2.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 + languageName: node + linkType: hard + +"unique-slug@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-slug@npm:3.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/617240eb921af803b47d322d75a71a363dacf2e56c29ae5d1404fad85f64f4ec81ef10ee4fd79215d0202cbe1e5a653edb0558d59c9c81d3bd538c2d58e4c026 + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + languageName: node + linkType: hard + +"unique-string@npm:^2.0.0": + version: 2.0.0 + resolution: "unique-string@npm:2.0.0" + dependencies: + crypto-random-string: "npm:^2.0.0" + checksum: 10c0/11820db0a4ba069d174bedfa96c588fc2c96b083066fafa186851e563951d0de78181ac79c744c1ed28b51f9d82ac5b8196ff3e4560d0178046ef455d8c2244b + languageName: node + linkType: hard + +"universal-user-agent@npm:^6.0.0": + version: 6.0.1 + resolution: "universal-user-agent@npm:6.0.1" + checksum: 10c0/5c9c46ffe19a975e11e6443640ed4c9e0ce48fcc7203325757a8414ac49940ebb0f4667f2b1fa561489d1eb22cb2d05a0f7c82ec20c5cba42e58e188fb19b187 + languageName: node + linkType: hard + +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 + languageName: node + linkType: hard + +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: 10c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c + languageName: node + linkType: hard + +"unstorage@npm:^1.9.0": + version: 1.12.0 + resolution: "unstorage@npm:1.12.0" + dependencies: + anymatch: "npm:^3.1.3" + chokidar: "npm:^3.6.0" + destr: "npm:^2.0.3" + h3: "npm:^1.12.0" + listhen: "npm:^1.7.2" + lru-cache: "npm:^10.4.3" + mri: "npm:^1.2.0" + node-fetch-native: "npm:^1.6.4" + ofetch: "npm:^1.3.4" + ufo: "npm:^1.5.4" + peerDependencies: + "@azure/app-configuration": ^1.7.0 + "@azure/cosmos": ^4.1.1 + "@azure/data-tables": ^13.2.2 + "@azure/identity": ^4.4.1 + "@azure/keyvault-secrets": ^4.8.0 + "@azure/storage-blob": ^12.24.0 + "@capacitor/preferences": ^6.0.2 + "@netlify/blobs": ^6.5.0 || ^7.0.0 + "@planetscale/database": ^1.19.0 + "@upstash/redis": ^1.34.0 + "@vercel/kv": ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.4.1 + peerDependenciesMeta: + "@azure/app-configuration": + optional: true + "@azure/cosmos": + optional: true + "@azure/data-tables": + optional: true + "@azure/identity": + optional: true + "@azure/keyvault-secrets": + optional: true + "@azure/storage-blob": + optional: true + "@capacitor/preferences": + optional: true + "@netlify/blobs": + optional: true + "@planetscale/database": + optional: true + "@upstash/redis": + optional: true + "@vercel/kv": + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + checksum: 10c0/66fc3938e6b840c326d171de34ad05b0d2752f65c67a297ad1bda5e135f1975491bab8829e1885e2a74b579015c1e2cd0db280a0fc16d205783459493643c6f6 + languageName: node + linkType: hard + +"untildify@npm:^4.0.0": + version: 4.0.0 + resolution: "untildify@npm:4.0.0" + checksum: 10c0/d758e624c707d49f76f7511d75d09a8eda7f2020d231ec52b67ff4896bcf7013be3f9522d8375f57e586e9a2e827f5641c7e06ee46ab9c435fc2b2b2e9de517a + languageName: node + linkType: hard + +"untun@npm:^0.1.3": + version: 0.1.3 + resolution: "untun@npm:0.1.3" + dependencies: + citty: "npm:^0.1.5" + consola: "npm:^3.2.3" + pathe: "npm:^1.1.1" + bin: + untun: bin/untun.mjs + checksum: 10c0/2b44a4cc84a5c21994f43b9f55348e5a8d9dd5fd0ad8fb5cd091b6f6b53d506b1cdb90e89cc238d61b46d488f7a89ab0d1a5c735bfc835581c7b22a236381295 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.1.0": + version: 1.1.1 + resolution: "update-browserslist-db@npm:1.1.1" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.0" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/536a2979adda2b4be81b07e311bd2f3ad5e978690987956bc5f514130ad50cac87cd22c710b686d79731e00fbee8ef43efe5fcd72baa241045209195d43dcc80 + languageName: node + linkType: hard + +"upper-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case-first@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/ccad6a0b143310ebfba2b5841f30bef71246297385f1329c022c902b2b5fc5aee009faf1ac9da5ab3ba7f615b88f5dc1cd80461b18a8f38cb1d4c3eb92538ea9 + languageName: node + linkType: hard + +"upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/5ac176c9d3757abb71400df167f9abb46d63152d5797c630d1a9f083fbabd89711fb4b3dc6de06ff0138fe8946fa5b8518b4fcdae9ca8a3e341417075beae069 + languageName: node + linkType: hard + +"uqr@npm:^0.1.2": + version: 0.1.2 + resolution: "uqr@npm:0.1.2" + checksum: 10c0/40cd81b4c13f1764d52ec28da2d58e60816e6fae54d4eb75b32fbf3137937f438eff16c766139fb0faec5d248a5314591f5a0dbd694e569d419eed6f3bd80242 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"url-join@npm:^4.0.0": + version: 4.0.1 + resolution: "url-join@npm:4.0.1" + checksum: 10c0/ac65e2c7c562d7b49b68edddcf55385d3e922bc1dd5d90419ea40b53b6de1607d1e45ceb71efb9d60da02c681d13c6cb3a1aa8b13fc0c989dfc219df97ee992d + languageName: node + linkType: hard + +"url-loader@npm:4.1.1": + version: 4.1.1 + resolution: "url-loader@npm:4.1.1" + dependencies: + loader-utils: "npm:^2.0.0" + mime-types: "npm:^2.1.27" + schema-utils: "npm:^3.0.0" + peerDependencies: + file-loader: "*" + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + checksum: 10c0/71b6300e02ce26c70625eae1a2297c0737635038c62691bb3007ac33e85c0130efc74bfb444baf5c6b3bad5953491159d31d66498967d1417865d0c7e7cd1a64 + languageName: node + linkType: hard + +"url-parse@npm:^1.5.3": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: "npm:^2.1.1" + requires-port: "npm:^1.0.0" + checksum: 10c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 + languageName: node + linkType: hard + +"url@npm:0.11.0": + version: 0.11.0 + resolution: "url@npm:0.11.0" + dependencies: + punycode: "npm:1.3.2" + querystring: "npm:0.2.0" + checksum: 10c0/bbe05f9f570ec5c06421c50ca63f287e61279092eed0891db69a9619323703ccd3987e6eed234c468794cf25680c599680d5c1f58d26090f1956c8e9ed8346a2 + languageName: node + linkType: hard + +"use-sync-external-store@npm:1.2.0": + version: 1.2.0 + resolution: "use-sync-external-store@npm:1.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/ac4814e5592524f242921157e791b022efe36e451fe0d4fd4d204322d5433a4fc300d63b0ade5185f8e0735ded044c70bcf6d2352db0f74d097a238cebd2da02 + languageName: node + linkType: hard + +"utf-8-validate@npm:^5.0.2": + version: 5.0.10 + resolution: "utf-8-validate@npm:5.0.10" + dependencies: + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10c0/23cd6adc29e6901aa37ff97ce4b81be9238d0023c5e217515b34792f3c3edb01470c3bd6b264096dd73d0b01a1690b57468de3a24167dd83004ff71c51cc025f + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"util@npm:0.12.5, util@npm:^0.12.4": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: "npm:^2.0.3" + is-arguments: "npm:^1.0.4" + is-generator-function: "npm:^1.0.7" + is-typed-array: "npm:^1.1.3" + which-typed-array: "npm:^1.1.2" + checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 + languageName: node + linkType: hard + +"utility-types@npm:^3.10.0": + version: 3.11.0 + resolution: "utility-types@npm:3.11.0" + checksum: 10c0/2f1580137b0c3e6cf5405f37aaa8f5249961a76d26f1ca8efc0ff49a2fc0e0b2db56de8e521a174d075758e0c7eb3e590edec0832eb44478b958f09914920f19 + languageName: node + linkType: hard + +"utils-merge@npm:1.0.1": + version: 1.0.1 + resolution: "utils-merge@npm:1.0.1" + checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 + languageName: node + linkType: hard + +"uuid4@npm:2.0.3": + version: 2.0.3 + resolution: "uuid4@npm:2.0.3" + checksum: 10c0/2f878a9eefb02d13331b1353979e2b9c56c5b00d898224a537fe50bf06722df909a4c950d59868ff784cf955996e05338ff4646ca4815fd850674c3fe5d1e87f + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + languageName: node + linkType: hard + +"uuid@npm:^9.0.1": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 + languageName: node + linkType: hard + +"v8-compile-cache@npm:2.3.0": + version: 2.3.0 + resolution: "v8-compile-cache@npm:2.3.0" + checksum: 10c0/b2d866febf943fbbf0b5e8d43ae9a9b0dacd11dd76e6a9c8e8032268f0136f081e894a2723774ae2d86befa994be4d4046b0717d82df4f3a10e067994ad5c688 + languageName: node + linkType: hard + +"v8-compile-cache@npm:^2.0.3": + version: 2.4.0 + resolution: "v8-compile-cache@npm:2.4.0" + checksum: 10c0/387851192545e7f4d691ba674de90890bba76c0f08ee4909ab862377f556221e75b3a361466490e201203401d64d7795f889882bdabc98b6f3c0bf1038a535be + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/968bcf1c7c88c04df1ffb463c179558a2ec17aa49e49376120504958239d9e9dad5281aa05f2a78542b8557f2be0b0b4c325710262f3b838b40d703d5ed30c23 + languageName: node + linkType: hard + +"validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": + version: 3.0.4 + resolution: "validate-npm-package-license@npm:3.0.4" + dependencies: + spdx-correct: "npm:^3.0.0" + spdx-expression-parse: "npm:^3.0.0" + checksum: 10c0/7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f + languageName: node + linkType: hard + +"validate-npm-package-name@npm:^4.0.0": + version: 4.0.0 + resolution: "validate-npm-package-name@npm:4.0.0" + dependencies: + builtins: "npm:^5.0.0" + checksum: 10c0/d7f753c0aac0a2b8dd06752e7278d18165a21e28b5064d897a1b6f10350d857b339d6bd9e08dd140710433479940bec9ba151b619196780dc6e49dd8fbff6df8 + languageName: node + linkType: hard + +"validate-npm-package-name@npm:^5.0.0": + version: 5.0.1 + resolution: "validate-npm-package-name@npm:5.0.1" + checksum: 10c0/903e738f7387404bb72f7ac34e45d7010c877abd2803dc2d614612527927a40a6d024420033132e667b1bade94544b8a1f65c9431a4eb30d0ce0d80093cd1f74 + languageName: node + linkType: hard + +"valtio@npm:1.11.2": + version: 1.11.2 + resolution: "valtio@npm:1.11.2" + dependencies: + proxy-compare: "npm:2.5.1" + use-sync-external-store: "npm:1.2.0" + peerDependencies: + "@types/react": ">=16.8" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + react: + optional: true + checksum: 10c0/9ed337d1da4a3730d429b3415c2cb63340998000e62fb3e545e2fc05d27f55fc510abc89046d6719b4cae02742cdb733fe235bade90bfae50a0e13ece2287106 + languageName: node + linkType: hard + +"varint@npm:^6.0.0": + version: 6.0.0 + resolution: "varint@npm:6.0.0" + checksum: 10c0/737fc37088a62ed3bd21466e318d21ca7ac4991d0f25546f518f017703be4ed0f9df1c5559f1dd533dddba4435a1b758fd9230e4772c1a930ef72b42f5c750fd + languageName: node + linkType: hard + +"vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f + languageName: node + linkType: hard + +"verror@npm:1.10.0": + version: 1.10.0 + resolution: "verror@npm:1.10.0" + dependencies: + assert-plus: "npm:^1.0.0" + core-util-is: "npm:1.0.2" + extsprintf: "npm:^1.2.0" + checksum: 10c0/37ccdf8542b5863c525128908ac80f2b476eed36a32cb944de930ca1e2e78584cc435c4b9b4c68d0fc13a47b45ff364b4be43aa74f8804f9050140f660fb660d + languageName: node + linkType: hard + +"viem@npm:*, viem@npm:^2.1.1": + version: 2.21.22 + resolution: "viem@npm:2.21.22" + dependencies: + "@adraffy/ens-normalize": "npm:1.11.0" + "@noble/curves": "npm:1.6.0" + "@noble/hashes": "npm:1.5.0" + "@scure/bip32": "npm:1.5.0" + "@scure/bip39": "npm:1.4.0" + abitype: "npm:1.0.6" + isows: "npm:1.0.6" + webauthn-p256: "npm:0.0.10" + ws: "npm:8.18.0" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/eab8b5df1fc630552b81ae784b9618138d39d9303d49312a271709d17c04adb75d6b4a5d6c212d250bfe0041df79f052ff7cbd9cc68c0b9b3a0f44ae76808b92 + languageName: node + linkType: hard + +"viem@npm:2.16.2": + version: 2.16.2 + resolution: "viem@npm:2.16.2" + dependencies: + "@adraffy/ens-normalize": "npm:1.10.0" + "@noble/curves": "npm:1.2.0" + "@noble/hashes": "npm:1.3.2" + "@scure/bip32": "npm:1.3.2" + "@scure/bip39": "npm:1.2.1" + abitype: "npm:1.0.4" + isows: "npm:1.0.4" + ws: "npm:8.17.1" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/d53c5a97bfe1f1c1c38c77bd8f9e2af17eecd76950395e43cbc5f8fed80f2705717507f1a8f994006e1f3af40f60334f31ed62b0037365330996054f0e892515 + languageName: node + linkType: hard + +"viem@npm:^1.0.0, viem@npm:^1.1.4": + version: 1.21.4 + resolution: "viem@npm:1.21.4" + dependencies: + "@adraffy/ens-normalize": "npm:1.10.0" + "@noble/curves": "npm:1.2.0" + "@noble/hashes": "npm:1.3.2" + "@scure/bip32": "npm:1.3.2" + "@scure/bip39": "npm:1.2.1" + abitype: "npm:0.9.8" + isows: "npm:1.0.3" + ws: "npm:8.13.0" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/8b29c790181e44c4c95b9ffed1a8c1b6c2396eb949b95697cc390ca8c49d88ef9e2cd56bd4800b90a9bbc93681ae8d63045fc6fa06e00d84f532bef77967e751 + languageName: node + linkType: hard + +"vite@npm:4.3.9": + version: 4.3.9 + resolution: "vite@npm:4.3.9" + dependencies: + esbuild: "npm:^0.17.5" + fsevents: "npm:~2.3.2" + postcss: "npm:^8.4.23" + rollup: "npm:^3.21.0" + peerDependencies: + "@types/node": ">= 14" + less: "*" + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/9eb1c99f16992e1b29e3eea76df312983f2e59915c369fede0f1e6716b80827857f88cfc75092aac807d20c73033c65be82a315a14ab312a52d22a9bdad1ca82 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^4.0.0": + version: 4.0.0 + resolution: "w3c-xmlserializer@npm:4.0.0" + dependencies: + xml-name-validator: "npm:^4.0.0" + checksum: 10c0/02cc66d6efc590bd630086cd88252444120f5feec5c4043932b0d0f74f8b060512f79dc77eb093a7ad04b4f02f39da79ce4af47ceb600f2bf9eacdc83204b1a8 + languageName: node + linkType: hard + +"wagmi@npm:*": + version: 2.12.17 + resolution: "wagmi@npm:2.12.17" + dependencies: + "@wagmi/connectors": "npm:5.1.15" + "@wagmi/core": "npm:2.13.8" + use-sync-external-store: "npm:1.2.0" + peerDependencies: + "@tanstack/react-query": ">=5.0.0" + react: ">=18" + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/a64b5fd364c051297ad9efec292be46c7e00f0718f944bc7974f4715b617f762f1c167f6cfb86881c0a51474320aaeef10b230b7722771a7285252fd1bf6e53b + languageName: node + linkType: hard + +"wagmi@npm:2.10.9": + version: 2.10.9 + resolution: "wagmi@npm:2.10.9" + dependencies: + "@wagmi/connectors": "npm:5.0.21" + "@wagmi/core": "npm:2.11.6" + use-sync-external-store: "npm:1.2.0" + peerDependencies: + "@tanstack/react-query": ">=5.0.0" + react: ">=18" + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/a7e2d127e9e04b758e76f1c204d4133fd348945787ba16e6d6db8604996e27643b606250056e785d5f6b08be8bf67d3402aa81d0a4b297359a5f0782bf683485 + languageName: node + linkType: hard + +"walk-up-path@npm:^1.0.0": + version: 1.0.0 + resolution: "walk-up-path@npm:1.0.0" + checksum: 10c0/e2dc2346acfeec355c8af17095aa8689b57906f0f3ad5f3ff1b0a29a36ee41904608e9a3545a933a2cfa22f20905e2bbe5dd6469cb31b110c8e129c23103e985 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + +"watchpack@npm:^2.4.0, watchpack@npm:^2.4.1": + version: 2.4.2 + resolution: "watchpack@npm:2.4.2" + dependencies: + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.1.2" + checksum: 10c0/ec60a5f0e9efaeca0102fd9126346b3b2d523e01c34030d3fddf5813a7125765121ebdc2552981136dcd2c852deb1af0b39340f2fcc235f292db5399d0283577 + languageName: node + linkType: hard + +"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": + version: 1.7.3 + resolution: "wbuf@npm:1.7.3" + dependencies: + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.0, wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + +"weak-lru-cache@npm:^1.2.2": + version: 1.2.2 + resolution: "weak-lru-cache@npm:1.2.2" + checksum: 10c0/744847bd5b96ca86db1cb40d0aea7e92c02bbdb05f501181bf9c581e82fa2afbda32a327ffbe75749302b8492ab449f1c657ca02410d725f5d412d1e6c607d72 + languageName: node + linkType: hard + +"webauthn-p256@npm:0.0.10": + version: 0.0.10 + resolution: "webauthn-p256@npm:0.0.10" + dependencies: + "@noble/curves": "npm:^1.4.0" + "@noble/hashes": "npm:^1.4.0" + checksum: 10c0/27d836d81a1fec24a31d2d9b652f8ff6876b51940d1003bbd14dc5cfa57c58d84223b5a4eece229516522fd997bc0bc7be618ac42b129fb5fa42fa530060b16d + languageName: node + linkType: hard + +"webextension-polyfill@npm:>=0.10.0 <1.0": + version: 0.12.0 + resolution: "webextension-polyfill@npm:0.12.0" + checksum: 10c0/5ace2aaaf6a203515bdd2fb948622f186a5fbb50099b539ce9c0ad54896f9cc1fcc3c0e2a71d1f7071dd7236d7daebba1e0cbcf43bfdfe54361addf0333ee7d1 + languageName: node + linkType: hard + +"webextension-polyfill@npm:^0.10.0": + version: 0.10.0 + resolution: "webextension-polyfill@npm:0.10.0" + checksum: 10c0/6a45278f1fed8fbd5355f9b19a7b0b3fadc91fa3a6eef69125a1706bb3efa2181235eefbfb3f538443bb396cfcb97512361551888ce8465c08914431cb2d5b6d + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 + languageName: node + linkType: hard + +"webpack-dev-middleware@npm:6.1.1": + version: 6.1.1 + resolution: "webpack-dev-middleware@npm:6.1.1" + dependencies: + colorette: "npm:^2.0.10" + memfs: "npm:^3.4.12" + mime-types: "npm:^2.1.31" + range-parser: "npm:^1.2.1" + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + checksum: 10c0/f8f5b7f7591fa3e4d4008b28ab2b5c13367a24587257e3e37cff31e2d8a6c859de5294af83c79e8faf3137db194377f392fffacdf5010b5c1311eba6f9b71568 + languageName: node + linkType: hard + +"webpack-dev-middleware@npm:^5.3.1, webpack-dev-middleware@npm:^5.3.4": + version: 5.3.4 + resolution: "webpack-dev-middleware@npm:5.3.4" + dependencies: + colorette: "npm:^2.0.10" + memfs: "npm:^3.4.3" + mime-types: "npm:^2.1.31" + range-parser: "npm:^1.2.1" + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 10c0/257df7d6bc5494d1d3cb66bba70fbdf5a6e0423e39b6420f7631aeb52435afbfbff8410a62146dcdf3d2f945c62e03193aae2ac1194a2f7d5a2523b9d194e9e1 + languageName: node + linkType: hard + +"webpack-dev-server@npm:4.15.0": + version: 4.15.0 + resolution: "webpack-dev-server@npm:4.15.0" + dependencies: + "@types/bonjour": "npm:^3.5.9" + "@types/connect-history-api-fallback": "npm:^1.3.5" + "@types/express": "npm:^4.17.13" + "@types/serve-index": "npm:^1.9.1" + "@types/serve-static": "npm:^1.13.10" + "@types/sockjs": "npm:^0.3.33" + "@types/ws": "npm:^8.5.1" + ansi-html-community: "npm:^0.0.8" + bonjour-service: "npm:^1.0.11" + chokidar: "npm:^3.5.3" + colorette: "npm:^2.0.10" + compression: "npm:^1.7.4" + connect-history-api-fallback: "npm:^2.0.0" + default-gateway: "npm:^6.0.3" + express: "npm:^4.17.3" + graceful-fs: "npm:^4.2.6" + html-entities: "npm:^2.3.2" + http-proxy-middleware: "npm:^2.0.3" + ipaddr.js: "npm:^2.0.1" + launch-editor: "npm:^2.6.0" + open: "npm:^8.0.9" + p-retry: "npm:^4.5.0" + rimraf: "npm:^3.0.2" + schema-utils: "npm:^4.0.0" + selfsigned: "npm:^2.1.1" + serve-index: "npm:^1.9.1" + sockjs: "npm:^0.3.24" + spdy: "npm:^4.0.2" + webpack-dev-middleware: "npm:^5.3.1" + ws: "npm:^8.13.0" + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: 10c0/7e4555b687071f2f4c6d7ff0faa1c7fc155bc35983c703b6fd250f3fb3e387a18394e0bd43ce0ede9bb433efe0947bc05ad55996b3ac5669a8adb64d6c1abba0 + languageName: node + linkType: hard + +"webpack-dev-server@npm:^4.9.3": + version: 4.15.2 + resolution: "webpack-dev-server@npm:4.15.2" + dependencies: + "@types/bonjour": "npm:^3.5.9" + "@types/connect-history-api-fallback": "npm:^1.3.5" + "@types/express": "npm:^4.17.13" + "@types/serve-index": "npm:^1.9.1" + "@types/serve-static": "npm:^1.13.10" + "@types/sockjs": "npm:^0.3.33" + "@types/ws": "npm:^8.5.5" + ansi-html-community: "npm:^0.0.8" + bonjour-service: "npm:^1.0.11" + chokidar: "npm:^3.5.3" + colorette: "npm:^2.0.10" + compression: "npm:^1.7.4" + connect-history-api-fallback: "npm:^2.0.0" + default-gateway: "npm:^6.0.3" + express: "npm:^4.17.3" + graceful-fs: "npm:^4.2.6" + html-entities: "npm:^2.3.2" + http-proxy-middleware: "npm:^2.0.3" + ipaddr.js: "npm:^2.0.1" + launch-editor: "npm:^2.6.0" + open: "npm:^8.0.9" + p-retry: "npm:^4.5.0" + rimraf: "npm:^3.0.2" + schema-utils: "npm:^4.0.0" + selfsigned: "npm:^2.1.1" + serve-index: "npm:^1.9.1" + sockjs: "npm:^0.3.24" + spdy: "npm:^4.0.2" + webpack-dev-middleware: "npm:^5.3.4" + ws: "npm:^8.13.0" + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: 10c0/625bd5b79360afcf98782c8b1fd710b180bb0e96d96b989defff550c546890010ceea82ffbecb2a0a23f7f018bc72f2dee7b3070f7b448fb0110df6657fb2904 + languageName: node + linkType: hard + +"webpack-merge@npm:5.8.0": + version: 5.8.0 + resolution: "webpack-merge@npm:5.8.0" + dependencies: + clone-deep: "npm:^4.0.1" + wildcard: "npm:^2.0.0" + checksum: 10c0/400eaaba69d2240d51dc7a4427dde37849a8f2fdf93731be6a8aad34d70d55bb38cb10c5001c7b339fc91f8c8547e782ecbd79eff24ad861e21e6a4c5dc959fb + languageName: node + linkType: hard + +"webpack-merge@npm:5.9.0": + version: 5.9.0 + resolution: "webpack-merge@npm:5.9.0" + dependencies: + clone-deep: "npm:^4.0.1" + wildcard: "npm:^2.0.0" + checksum: 10c0/74935a4b03612ee65c0867ca1050788ccfec3efa6d17bb5acceacbd4fbbd0356a073997723eff7380deccd88f13a55c52cb004e80e34f3a67808ac455da6ad64 + languageName: node + linkType: hard + +"webpack-node-externals@npm:^3.0.0": + version: 3.0.0 + resolution: "webpack-node-externals@npm:3.0.0" + checksum: 10c0/9f645a4dc8e122dac43cdc8c1367d4b44af20c79632438b633acc1b4fe64ea7ba1ad6ab61bd0fc46e1b873158c48d8c7a25a489cdab1f31299f00eb3b81cfc61 + languageName: node + linkType: hard + +"webpack-sources@npm:^3.0.0, webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 10c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e + languageName: node + linkType: hard + +"webpack-subresource-integrity@npm:5.1.0, webpack-subresource-integrity@npm:^5.1.0": + version: 5.1.0 + resolution: "webpack-subresource-integrity@npm:5.1.0" + dependencies: + typed-assert: "npm:^1.0.8" + peerDependencies: + html-webpack-plugin: ">= 5.0.0-beta.1 < 6" + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + checksum: 10c0/7def5d995a43fc5e60097084e68145359fbeb47b96cb9c87ee811d70c5eb99766c28974ef28f09ae6b1d1b3cd2b7c35838b36206f1c39d090a8f531cd1fbbf6a + languageName: node + linkType: hard + +"webpack@npm:5.75.0": + version: 5.75.0 + resolution: "webpack@npm:5.75.0" + dependencies: + "@types/eslint-scope": "npm:^3.7.3" + "@types/estree": "npm:^0.0.51" + "@webassemblyjs/ast": "npm:1.11.1" + "@webassemblyjs/wasm-edit": "npm:1.11.1" + "@webassemblyjs/wasm-parser": "npm:1.11.1" + acorn: "npm:^8.7.1" + acorn-import-assertions: "npm:^1.7.6" + browserslist: "npm:^4.14.5" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.10.0" + es-module-lexer: "npm:^0.9.0" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.9" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.1.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.1.3" + watchpack: "npm:^2.4.0" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/0160331d6255bdb8027f2589458514709a4a6555e2868adb6356a309d3f7b2212cb129a00f343fe0f94f54a31b4677507a3adf9ae73badc1216105ac548681ea + languageName: node + linkType: hard + +"webpack@npm:5.86.0": + version: 5.86.0 + resolution: "webpack@npm:5.86.0" + dependencies: + "@types/eslint-scope": "npm:^3.7.3" + "@types/estree": "npm:^1.0.0" + "@webassemblyjs/ast": "npm:^1.11.5" + "@webassemblyjs/wasm-edit": "npm:^1.11.5" + "@webassemblyjs/wasm-parser": "npm:^1.11.5" + acorn: "npm:^8.7.1" + acorn-import-assertions: "npm:^1.9.0" + browserslist: "npm:^4.14.5" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.14.1" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.9" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.1.2" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.7" + watchpack: "npm:^2.4.0" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/138cd2f9d6ddd028ce7deec8958e9bc6092471c6514a3429a2383dcf9a33b4060b05de1337c461f1d3038b066f62198e5e820497f8f618441ec63108c83b8711 + languageName: node + linkType: hard + +"webpack@npm:^5.75.0": + version: 5.95.0 + resolution: "webpack@npm:5.95.0" + dependencies: + "@types/estree": "npm:^1.0.5" + "@webassemblyjs/ast": "npm:^1.12.1" + "@webassemblyjs/wasm-edit": "npm:^1.12.1" + "@webassemblyjs/wasm-parser": "npm:^1.12.1" + acorn: "npm:^8.7.1" + acorn-import-attributes: "npm:^1.9.5" + browserslist: "npm:^4.21.10" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.17.1" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.11" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.1" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/b9e6d0f8ebcbf0632494ac0b90fe4acb8f4a9b83f7ace4a67a15545a36fe58599c912ab58e625e1bf58ab3b0916c75fe99da6196d412ee0cab0b5065edd84238 + languageName: node + linkType: hard + +"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": + version: 0.7.4 + resolution: "websocket-driver@npm:0.7.4" + dependencies: + http-parser-js: "npm:>=0.5.1" + safe-buffer: "npm:>=5.1.0" + websocket-extensions: "npm:>=0.1.1" + checksum: 10c0/5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 + languageName: node + linkType: hard + +"websocket-extensions@npm:>=0.1.1": + version: 0.1.4 + resolution: "websocket-extensions@npm:0.1.4" + checksum: 10c0/bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 + languageName: node + linkType: hard + +"whatwg-encoding@npm:^2.0.0": + version: 2.0.0 + resolution: "whatwg-encoding@npm:2.0.0" + dependencies: + iconv-lite: "npm:0.6.3" + checksum: 10c0/91b90a49f312dc751496fd23a7e68981e62f33afe938b97281ad766235c4872fc4e66319f925c5e9001502b3040dd25a33b02a9c693b73a4cbbfdc4ad10c3e3e + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "whatwg-mimetype@npm:3.0.0" + checksum: 10c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f + languageName: node + linkType: hard + +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: "npm:^3.0.0" + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/f7ec264976d7c725e0696fcaf9ebe056e14422eacbf92fdbb4462034609cba7d0c85ffa1aab05e9309d42969bcf04632ba5ed3f3882c516d7b093053315bf4c1 + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"wherearewe@npm:^2.0.1": + version: 2.0.1 + resolution: "wherearewe@npm:2.0.1" + dependencies: + is-electron: "npm:^2.2.0" + checksum: 10c0/a6193319688972890597342108b083fe35505ad0501a9c6c56926b6897f478f66d76436951005e24637265df717f81bc70ea511bd684972be5a966310581b872 + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.1.3": + version: 1.1.4 + resolution: "which-builtin-type@npm:1.1.4" + dependencies: + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.0.2" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10c0/a4a76d20d869a81b1dbb4adea31edc7e6c1a4466d3ab7c2cd757c9219d48d3723b04076c85583257b0f0f8e3ebe5af337248b8ceed57b9051cb97bce5bd881d1 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + +"which-module@npm:^2.0.0": + version: 2.0.1 + resolution: "which-module@npm:2.0.1" + checksum: 10c0/087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2": + version: 1.1.15 + resolution: "which-typed-array@npm:1.1.15" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983 + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^3.0.0": + version: 3.0.1 + resolution: "which@npm:3.0.1" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: bin/which.js + checksum: 10c0/15263b06161a7c377328fd2066cb1f093f5e8a8f429618b63212b5b8847489be7bcab0ab3eb07f3ecc0eda99a5a7ea52105cf5fa8266bedd083cc5a9f6da24f1 + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: "npm:^1.0.2 || 2 || 3 || 4" + checksum: 10c0/1d9c2a3e36dfb09832f38e2e699c367ef190f96b82c71f809bc0822c306f5379df87bab47bed27ea99106d86447e50eb972d3c516c2f95782807a9d082fbea95 + languageName: node + linkType: hard + +"wildcard@npm:^2.0.0": + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: 10c0/08f70cd97dd9a20aea280847a1fe8148e17cae7d231640e41eb26d2388697cbe65b67fd9e68715251c39b080c5ae4f76d71a9a69fa101d897273efdfb1b58bf7 + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 10c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"write-file-atomic@npm:^4.0.0, write-file-atomic@npm:^4.0.1, write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 + languageName: node + linkType: hard + +"ws@npm:7.4.6": + version: 7.4.6 + resolution: "ws@npm:7.4.6" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/4b44b59bbc0549c852fb2f0cdb48e40e122a1b6078aeed3d65557cbeb7d37dda7a4f0027afba2e6a7a695de17701226d02b23bd15c97b0837808c16345c62f8e + languageName: node + linkType: hard + +"ws@npm:8.13.0": + version: 8.13.0 + resolution: "ws@npm:8.13.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d + languageName: node + linkType: hard + +"ws@npm:8.17.1, ws@npm:~8.17.1": + version: 8.17.1 + resolution: "ws@npm:8.17.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe + languageName: node + linkType: hard + +"ws@npm:8.18.0, ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.5.0": + version: 8.18.0 + resolution: "ws@npm:8.18.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 + languageName: node + linkType: hard + +"ws@npm:^7.5.1": + version: 7.5.10 + resolution: "ws@npm:7.5.10" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/bd7d5f4aaf04fae7960c23dcb6c6375d525e00f795dd20b9385902bd008c40a94d3db3ce97d878acc7573df852056ca546328b27b39f47609f80fb22a0a9b61d + languageName: node + linkType: hard + +"xml-name-validator@npm:^4.0.0": + version: 4.0.0 + resolution: "xml-name-validator@npm:4.0.0" + checksum: 10c0/c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 10c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 + languageName: node + linkType: hard + +"xmlcreate@npm:^2.0.4": + version: 2.0.4 + resolution: "xmlcreate@npm:2.0.4" + checksum: 10c0/fc4234e2d1942877d761d4f3d64410b54633d2ec60b13a5d56a6a06545aba39a0df8ed7ded10785a302f632eb4f0a4fedbf4bf10e17892e11d5075244b9e5705 + languageName: node + linkType: hard + +"xmlhttprequest-ssl@npm:~2.1.1": + version: 2.1.1 + resolution: "xmlhttprequest-ssl@npm:2.1.1" + checksum: 10c0/1cef48c992676d117b1cfeb5636758c33dbd887d72bc9668ebf7d6d0c7d66ed8ea649442913a52aed3996deb9e92588d7405dbdb2e9d19cf801800ab175549fc + languageName: node + linkType: hard + +"xtend@npm:^2.2.0": + version: 2.2.0 + resolution: "xtend@npm:2.2.0" + checksum: 10c0/396c724b8ea54c7346d7ca304116dc9aa0327b4cee4782c0a42707e6022d9a6b1c1d61b056357b1ee24102d6a366a90a313cc38e79bf70452d4d205b64a1575f + languageName: node + linkType: hard + +"xtend@npm:^4.0.0, xtend@npm:^4.0.1, xtend@npm:^4.0.2, xtend@npm:~4.0.1": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + +"xtend@npm:~2.0.4": + version: 2.0.6 + resolution: "xtend@npm:2.0.6" + dependencies: + is-object: "npm:~0.1.2" + object-keys: "npm:~0.2.0" + checksum: 10c0/e1a613b2583dd72903f63bbccff66bef8fd43a1ae9dc64fb8f757c5649d691532d4cdd22c47053503e2dd32e0c409cc51bf705715048e1ecd72f8e68af182973 + languageName: node + linkType: hard + +"xtend@npm:~2.1.2": + version: 2.1.2 + resolution: "xtend@npm:2.1.2" + dependencies: + object-keys: "npm:~0.4.0" + checksum: 10c0/5b0289152e845041cfcb07d5fb31873a71e4fa9c0279299f9cce0e2a210a0177d071aac48546c998df2a44ff2c19d1cde8a9ab893e27192a0c2061c2837d8cb5 + languageName: node + linkType: hard + +"xtend@npm:~3.0.0": + version: 3.0.0 + resolution: "xtend@npm:3.0.0" + checksum: 10c0/0dbc3a69c22a6d9a517375ec1bbbbb765c58431578eacc5dbfbd28df3d1774c6c1e7068033914c62d0e9d41013d79bd598084b28fa1ec4b36f1cc03d61f0fa6e + languageName: node + linkType: hard + +"y18n@npm:^4.0.0": + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: 10c0/308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yaml@npm:^1.10.0, yaml@npm:^1.10.2, yaml@npm:^1.7.2": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f + languageName: node + linkType: hard + +"yargs-parser@npm:21.1.1, yargs-parser@npm:>=21.1.1, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs-parser@npm:^18.1.2": + version: 18.1.3 + resolution: "yargs-parser@npm:18.1.3" + dependencies: + camelcase: "npm:^5.0.0" + decamelize: "npm:^1.2.0" + checksum: 10c0/25df918833592a83f52e7e4f91ba7d7bfaa2b891ebf7fe901923c2ee797534f23a176913ff6ff7ebbc1cc1725a044cc6a6539fed8bfd4e13b5b16376875f9499 + languageName: node + linkType: hard + +"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 + languageName: node + linkType: hard + +"yargs@npm:17.7.2, yargs@npm:^17.2.1, yargs@npm:^17.3.1, yargs@npm:^17.5.1, yargs@npm:^17.6.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yargs@npm:^15.3.1": + version: 15.4.1 + resolution: "yargs@npm:15.4.1" + dependencies: + cliui: "npm:^6.0.0" + decamelize: "npm:^1.2.0" + find-up: "npm:^4.1.0" + get-caller-file: "npm:^2.0.1" + require-directory: "npm:^2.1.1" + require-main-filename: "npm:^2.0.0" + set-blocking: "npm:^2.0.0" + string-width: "npm:^4.2.0" + which-module: "npm:^2.0.0" + y18n: "npm:^4.0.0" + yargs-parser: "npm:^18.1.2" + checksum: 10c0/f1ca680c974333a5822732825cca7e95306c5a1e7750eb7b973ce6dc4f97a6b0a8837203c8b194f461969bfe1fb1176d1d423036635285f6010b392fa498ab2d + languageName: node + linkType: hard + +"yargs@npm:^16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: "npm:^7.0.2" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.0" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^20.2.2" + checksum: 10c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 + languageName: node + linkType: hard + +"yauzl@npm:^2.10.0": + version: 2.10.0 + resolution: "yauzl@npm:2.10.0" + dependencies: + buffer-crc32: "npm:~0.2.3" + fd-slicer: "npm:~1.1.0" + checksum: 10c0/f265002af7541b9ec3589a27f5fb8f11cf348b53cc15e2751272e3c062cd73f3e715bc72d43257de71bbaecae446c3f1b14af7559e8ab0261625375541816422 + languageName: node + linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"yocto-queue@npm:^1.0.0": + version: 1.1.1 + resolution: "yocto-queue@npm:1.1.1" + checksum: 10c0/cb287fe5e6acfa82690acb43c283de34e945c571a78a939774f6eaba7c285bacdf6c90fbc16ce530060863984c906d2b4c6ceb069c94d1e0a06d5f2b458e2a92 + languageName: node + linkType: hard + +"zod@npm:3.22.4": + version: 3.22.4 + resolution: "zod@npm:3.22.4" + checksum: 10c0/7578ab283dac0eee66a0ad0fc4a7f28c43e6745aadb3a529f59a4b851aa10872b3890398b3160f257f4b6817b4ce643debdda4fb21a2c040adda7862cab0a587 + languageName: node + linkType: hard + +"zone.js@npm:0.12.0": + version: 0.12.0 + resolution: "zone.js@npm:0.12.0" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/827efca5e0139644882aef6fa2c26c38beba5fa488613fc0a98d8bdd103d35b73b89d8a4b9d9de4ebab1f9cde32b17b9e19aff0824883af427988e5043621351 + languageName: node + linkType: hard + +"zustand@npm:4.4.1": + version: 4.4.1 + resolution: "zustand@npm:4.4.1" + dependencies: + use-sync-external-store: "npm:1.2.0" + peerDependencies: + "@types/react": ">=16.8" + immer: ">=9.0" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + checksum: 10c0/c119273886e5cdbd7a9f80c9e0fee8a2c736bb6428e283b25c6dfd428789a95e10b6ed6b18553c955ce0d5dd62e2f4a84af3e2a41f31fdb34fd25462d2b19a8c + languageName: node + linkType: hard